Eu acho que os dois principais problemas com meus programas são minha estrutura / organização de código e meu tratamento de erros. Estou lendo o Código Completo 2, mas preciso ler algo para trabalhar com possíveis problemas.
Por exemplo, em um site, se algo só pode acontecer se o usuário mexer com dados via javascript, você escreve para isso? Além disso, quando você não captura erros? Quando você escreve uma classe que espera uma string e um int como entrada, e eles não são uma string e int, você verifica isso ou deixa transparecer o método de chamada que passou por parâmetros incorretos?
Sei que este é um tópico amplo que não pode ser respondido em uma única resposta aqui, então o que estou procurando é um livro ou recurso que seja comumente aceito como ensino da prática adequada de tratamento de exceções.
fonte
Respostas:
Uma das coisas boas a lembrar é executar o tratamento de exceções
when there is a need
.Para a plataforma de desenvolvimento .NET, basta seguir as diretrizes do MSDN - Práticas recomendadas para manipulação de exceções , além de verificar este bom artigo de projeto de código - Exception Handling Best Practices in .NET
No entanto, as seguintes diretrizes são verdadeiras para qualquer plataforma de desenvolvimento:
Não gerencie a lógica de negócios com exceções. Use instruções condicionais. Se um controle puder ser feito com a instrução if-else claramente, não use exceções, pois reduz a legibilidade e o desempenho (por exemplo, controle nulo, divida pelo controle zero). .
Os nomes de exceção devem ser claros e significativos, indicando as causas da exceção.
Lance exceções para condições de erro ao implementar um método. Por exemplo, se você retornar valores -1, -2, -3 etc. em vez de FileNotFoundException, esse método não pode ser entendido.
Capture exceções específicas em vez da classe Exception superior. Isso trará desempenho adicional, legibilidade e manipulação de exceções mais específicas.
O controle nulo com condicionais não é uma alternativa para capturar NullPointerException. Se um método pode retornar nulo, controle-o com a instrução if-else. Se um retorno puder lançar NullPointerException, pegue-o.
Tente não voltar a lançar a exceção por causa do preço. Mas se o lançamento foi uma obrigação, lance novamente a mesma exceção em vez de criar uma nova exceção. Isso trará desempenho adicional. Você pode adicionar informações adicionais em cada camada a essa exceção.
Defina sua própria hierarquia de exceção estendendo a classe Exception atual (por exemplo, UserException, SystemException e seus subtipos) e use-os. Ao fazer isso, você pode especializar suas exceções e definir um módulo / camada reutilizável de exceções. mais a seguir neste link
fonte