Tratando erros no C# (C Sharp)


1.050 visualizações
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.

<CUSTOMERRORS mode="On" defaultredirect="Error.aspx">
</CUSTOMERRORS>

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:\Users\luis.gustavo\Documents\Visual Studio 2010\WebSites\WebSite11\Default.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 "<a href="http://www.legal.com.br/lista_requisicoes.aspx">http://www.legal.com.br/lista_requisicoes.aspx</a>
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.

Sobre Luis Gustavo de Souza Resende

Luis Gustavo de Souza Resende já escreveu 4 artigos no portal.

Meu nome é Luis Gustavo de Souza Resende, tenho 27 anos, sou formado em ciências da computação pela instituição UNICOC de Ribeirão Preto em 2006. Com 8 anos de experiência em tecnologia da informação, já atue como desenvolvedor, analista de negócios e coordenador. Atualmente tenho o prazer de atuar com analista desenvolvedor na COMLINK (www.comlink.com.br).

-->

1 Interação

  1. Hurbem disse:

    Ótimo artigo! Parabéns pela iniciativa.

Interaja

Qual a soma entre:
4 + 3