t.me/atinfo_chat Telegram группа по автоматизации тестирования

...throws Throwable или Exception?


(futu) #1

Подскажите есть ли принципиальная разница между конструкциями  throws Throwable и throws Exception при объявлении метода? если по другому сформулировать, то как поступать с тестах. Поделитесь плиз кто как делает.


(Mykhailo Poliarush) #2

Во-первых, нет смысла использования конструкции throws Throwable, так как при такой формулировке означает, что метод должен отлавливать как ошибки (error), так и исключения (exception). Более того Throwable - это супер класс. Ошибки в осномном воникают при работе с вируальной машиной и они нужны только для разработчиков виртуальной машины. Для всех остальных случаев нужно использовать Exception класс. Иерархия классов выглядит следующим образом.

Java exceptions

Более того, лучше всего использовать более конкретный класс исключения, например IOException или же делать свой класс (checked exception), который будет унаследован от Exception и потом указывать throws MyException.

Ссылки по теме:

 


(KaNoN) #3

Тут зависит от ситуации. Например, если нужно отлавливать исключения, причем особо значения не имеет, что за исключение, то можно ловить и Throwable. Это особенно важно, если нельзя пропускать ни одного исключения. Тогда Throwable накроет всё. Безусловно, желательно делать более детальный фильтр и каждый отдельный тип исключения обрабатывать по-своему. Но это если надо.

Ну, а уже если дело касается генерации исключения, то конечно лучше использовать либо более специфический класс либо вообще создать свой.


(futu) #4

В моей ситуации первый вариант. Спасибо за пояснение. Еще узнал мнение опытного разработчика по этому поводу. С его слов, что в тестах (unit тесты), особого значения не имеет.