Я обновляю существующую библиотеку, чтобы генерировать исключения, чтобы улучшить отладку людей, использующих библиотеку.
Сначала мне показалось, что я определяю исключения, относящиеся к каждому классу, однако большинство из этих исключений - это просто расширения существующих исключений времени выполнения (например, FooNegativeIntArgumentException extends IllegalArgumentException
, FooNullBarException extends NullPointerException
) с определенными сообщениями.
Каковы компромиссы в определении новых исключений и использования существующих? Существуют ли какие-либо соглашения/лучшие практики?
Кроме того, учитывая необходимость обратной совместимости, большинство (если не все) этих исключений являются исключениями времени выполнения.