J'ai rencontré un débat entre quelques amis et moi. Ils préfèrent les exceptions générales telles que ClientErrorException
et ServerErrorException
avec détail comme champs de l'exception, alors que je préfère rendre les choses plus spécifiques. Par exemple, je pourrais avoir une poignée d'exceptions comme:
BadRequestException
AuthenticationFailureException
ProductNotFoundException
Chacun de ces éléments est basé sur le code d'erreur renvoyé par l'API.
Suivant les avantages des exceptions, cela semble idiomatique pour Java. Cependant, l'opinion de mes amis n'est pas tout à fait rare.
Existe-t-il un moyen préféré en termes de lisibilité du code et de convivialité de l'API, ou est-ce vraiment une question de préférence?
abstract
et généraliser des classes d'exceptions avec les méthodes getter, puis faire en sorte que les classes granulaires étendent les classes générales. Par exemple AuthenticationFaliureException extends ClientErrorException
. De cette façon, chaque utilisateur peut choisir comment il souhaite gérer les exceptions. Mais ça marche plus, évidemment. Cependant, lors de l'écriture d'une application (au lieu d'une bibliothèque), c'est une situation différente à mon humble avis. Dans ce cas, je ne rendrais pas les exceptions plus granulaires que vous n'en avez besoin, par souci de simplicité.