Nos anos que passei programando e desenvolvendo sistemas, há apenas duas situações em que achei o padrão em questão útil (em ambos os casos, a supressão continha também o registro da exceção lançada, não considero captura e null
retorno simples como uma boa prática. )
As duas situações são as seguintes:
1. Quando a exceção não foi considerada um estado excepcional
É quando você executa uma operação em alguns dados, que podem ser lançados, você sabe que podem ser lançados, mas você ainda deseja que seu aplicativo continue em execução, porque você não precisa dos dados processados. Se você os receber, é bom; se não, também é bom.
Alguns atributos opcionais de uma classe podem ser lembrados.
2. Ao fornecer uma nova (melhor, mais rápida?) Implementação de uma biblioteca usando uma interface já usada em um aplicativo
Imagine que você tenha um aplicativo usando algum tipo de biblioteca antiga, que não emitiu exceções, mas retornou null
por erro. Então, você criou um adaptador para esta biblioteca, copiando praticamente a API original da biblioteca e está usando essa nova interface (ainda não lançada) em seu aplicativo e manipulando as null
verificações por conta própria.
É apresentada uma nova versão da biblioteca, ou talvez uma biblioteca completamente diferente, oferecendo a mesma funcionalidade que, em vez de retornar null
s, gera exceções e você deseja usá-la.
Você não deseja vazar as exceções para o aplicativo principal, portanto, suprimi-las e registrá-las no adaptador criado para quebrar essa nova dependência.
O primeiro caso não é um problema, é o comportamento desejado do código. Na segunda situação, no entanto, se em todo lugar o null
valor de retorno do adaptador da biblioteca realmente significa um erro, refatorar a API para gerar uma exceção e capturá-la em vez de procurar null
pode ser (e geralmente é em termos de código) uma boa idéia.
Pessoalmente, uso a supressão de exceção apenas no primeiro caso. Eu o usei apenas para o segundo caso, quando não tínhamos orçamento para fazer o restante do aplicativo funcionar com as exceções em vez de null
s.