Melhores práticas ou recomendações para lidar com exceções? [fechadas]

12

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.

mowwwalker
fonte
1
qual plataforma de linguagem e desenvolvimento você está usando?
precisa
1
Eu acho que "código limpo" tem um bom capítulo sobre este problema
Hoang Long
O que @ElYusubov disse. Os detalhes e os padrões de implementação do idioma / plataforma com que você está lidando têm muita influência sobre as práticas recomendadas.
vaughandroid

Respostas:

12

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

Yusubov
fonte
2
Alguns bons pontos gerais, embora eu não ache seu quinto ponto ("Controle nulo com condicionais ...") seja muito claro.
vaughandroid