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

Comentários

Deixe uma resposta

This site uses Akismet to reduce spam. Learn how your comment data is processed.