Я столкнулся с дебатами между несколькими друзьями и мной. Они предпочитают общие исключения, такие как ClientErrorException
и ServerErrorException
с подробностями в качестве полей исключения, тогда как я предпочитаю делать вещи более конкретными. Например, у меня может быть несколько исключений, таких как:
BadRequestException
AuthenticationFailureException
ProductNotFoundException
Каждый из них построен на основе кода ошибки, возвращенного из API.
Следуя преимуществам исключений, это кажется идиоматическим для Java. Однако мнение моих друзей не является чем-то необычным.
Есть ли предпочтительный способ с точки зрения читабельности кода и удобства использования API, или он действительно сводится к предпочтениям?
abstract
и обобщить классы исключений с помощью методов получения, а затем заставить гранулярные расширять общие. Например AuthenticationFaliureException extends ClientErrorException
. Таким образом, каждый пользователь может выбрать, как он хотел бы иметь дело с исключениями. Это больше работает, хотя, очевидно. Однако при написании приложения (вместо библиотеки) ИМХО это другая ситуация. В этом случае я бы не сделал исключения более детальными, чем вам нужно, для простоты.