Tecnologia

Tratando erros no C# (C Sharp)

Caros, bom dia!

Todos os erros gerados em tempo de execução na plataforma .NET geram uma exceção. Existe várias formas de tratar esses erros ao invés de explodir o erro para o usuário. Então vamos lá:

1) Alterando o arquivo web.config para enviar o usuário para uma página amigável.

Incluindo o código acima no arquivo web.config o usuário será enviado para página Error.aspx após qualquer erro ocorrido no sistema. Nessa página você pode informar ao usuário que ocorreu um erro e informar alguns procedimentos.

2) Utilizando o “try catch”:

Try{

//seu código

Int a = 0;

Int x = 35/a;

}catch(Exception ex){

//Incluir ações para tratar o erro. (verificar item 5)

}finnaly{

//Sempre excuta, mesmo não dando erro.

}

Utilizando o código acima, você inclui todo seu código dentro do bloco try, e se ocorrer qualquer erro, você pode tratá-lo dentro do bloco catch, que pode ser exibir o erro, gravar o erro, etc. O bloco finnaly sempre é executado, ocorrendo o erro ou não.

3) Utilizando a opção “override void OnError”:

protected override void OnError(EventArgs e){

//Incluir ações para tratar o erro. (verificar item 5)

}

Incluindo o código acima, se ocorrer qualquer erro no sistema, o fluxo de execução será direcionado para dentro desse método. Você pode incluir o método acima na página base e o método será herdado por todas as páginas.

4) Application_Error() no global.asasx

void Application_Error(object sender, EventArgs e)

{

//Incluir ações para tratar o erro. (verificar item 5)

}

Incluindo o código acima no global.asax, se ocorrer qualquer erro no sistema, o fluxo de execução será direcionado para dentro desse método.

5) *Utilize a função Server.GetLastError() para receber o Exception do erro, essa possui todas as informações sobre o erro, que podem ser enviadas por e-mail ou armazenadas no banco. As informações conditas no exception são essas:

 

Exception ex = Server.GetLastError();

ex.Message //menssagem do erro “Tentativa de divisão por zero.”

ex.Source //nome do aplicativo ou do objeto “App_Web_3v5oxec8”

ex.TargetSite// metodo que lançou a exeção “VoidPage_Load(System.Object, System.EventArgs)”

StackTrace trace = new StackTrace(ex, true);

trace.GetFrame(0).GetFileName().ToString()// Caminho do arquivo que gerou a execeção “c:Usersluis.gustavoDocumentsVisual Studio 2010WebSitesWebSite11Default.aspx.cs”

trace.GetFrame(0).GetFileLineNumber().ToString()// linha quegerou a execeção “42”

 

Segue outras informações importantes para ser armazenadas

getData()// a Data que ocorreu o erro “10/10/201123:45:33”

Request.ServerVariables[“HTTP_REFERER”] // endereço da página que gerou o erro “http://www.legal.com.br/lista_requisicoes.aspx”

Request.ServerVariables[“HTTP_USER_AGENT”]// agente “Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;WOW64; Trident/5.0)”

Request.UserHostAddress// ip do usuário “189.112.142.193”

Agradeço a atenção de todos, espero que o post seja útil. Qualquer dúvida ou sugestão deixe seu comentário abaixo.

Gustavo Resende

Deixe uma resposta