O tratamento de erros é fundamental para que sua aplicação seja gerenciada de forma robusta e consistente. Sem isso você fica a mercê do acaso e não sabe como proceder quando coisas inesperadas ocorrem em sua aplicação.
Para efetuar o tratamento a nível de aplicação, você deve usar o evento Application_Error no arquivo Global. asax; este evento ocorre para qualquer exceção não tratada na aplicação.
Neste artigo vou traçar uma estratégia básica para tratamento de erros em aplicações ASP .NET Web Forms, sim porque para ASP .NET MVC o caminho é diferente.
O bloco Finally/finally, que é opcional, realiza a liberação requerida. Isso inclui o fechamento de conexões de banco de dados usadas, liberação de objetos criados pelo método, etc. O código deste bloco sempre será executado.
Lembre-se que o .NET Framework não fecha conexões, arquivos, etc. quando ocorre um erro. isso é responsabilidade do programador e deve ser feita no bloco finally, este bloco é a última oportunidade para realizar qualquer liberação antes da infraestrutura de tratamentos de exceção tomar conta da aplicação.
Para ajudar a sua implementação da sua rotina de tratamento de erros temos a seguir um questionário onde com base em suas respostas você pode determinar qual parte do bloco try...catch...finally você irá precisar implementar.
R: Se ocorreu um erro, mas nada de útil pode ser feito na rotina, a exceção deve ser propagada para a rotina de chamada. Não serve a nenhum propósito útil capturar a exceção e relançá-la.
Por exemplo, se a rotina tenta gravar um registro em um banco de dados e encontra o registro bloqueado, uma nova tentativa pode ser feita na rotina. No entanto, se um valor é passado para a rotina e as operações resultam em um outro erro, a recuperação não pode ser realizada na rotina, mas deve ser manuseado pela rotina de chamada e a sua estrutura de manipulação de erros
R: As exceções que ocorrem no .NET Framework contém informações detalhadas sobre o erro. No entanto, as exceções não fornecem qualquer informação de contexto sobre o que estava sendo tentado no nível do aplicativo que pode ajudar a solucionar o erro ou fornecer informações mais úteis para o usuário.
Uma nova exceção pode ser criada e lançada com as informações adicionadas. O primeiro parâmetro para o objeto da nova exceção deve conter a mensagem de contexto útil, e o segundo parâmetro deve ser a exceção original. Os mecanismos de tratamento de exceção no .NET Framework criam uma lista ligada de objetos de exceção para criar uma trilha a partir da raiz da exceção até o nível onde a exceção é tratada. Ao passar a exceção original como o segundo parâmetro, a lista encadeada da exceção de raiz é mantida. Exemplo:
Para encerrar temos a seguir um código que mostra a utilização de bloco try/catch no interior de laço while para fornecer um mecanismo de tratamento de exceção onde definimos um número de tentativas para que a rotina seja executada novamente:
No código acima observe que temos um bloco try...finally que trata o código para abertura da conexão e atualização da tabela no bloco try e libera os recursos no bloco finally.
Os mecanismos de tratamento de exceções no .NET Framework são poderosos. Além do escopo que abordamos neste artigo, outros tipos de exceções específicas podem ser capturadas e processadas de forma diferente.
Além disso, você pode criar novas classes de exceção herdando as classes de exceção base e adicionando a funcionalidade exigida por seus aplicativos.
João 7:28 Jesus, pois, levantou a voz no templo e ensinava, dizendo: Sim, vós me conheceis, e sabeis donde sou; contudo eu não vim de mim mesmo, mas aquele que me enviou é verdadeiro, o qual vós não conheceis.