throw new Exception();
- это то, что вы должны никогда делать в блоке перехвата, но вам, возможно, придется или вы захотите выполнить команду throw new SomeException(throwable);
(с сохранением полной трассировки стека) вместо throw throwable;
в порядке соответствовать API вашего метода, например когда он объявляет, что он выбрасывает SomeException
, но вы вызываете код, который может выдать IOException
, который вы не хотите добавлять к предложению throws
вашего метода.
Вероятно, наиболее распространенным случаем является new RuntimeException(throwable);
, чтобы вообще не иметь предложения throws
. Многие люди скажут вам, что это ужасное злоупотребление, потому что вы должны использовать проверенные исключения. ИМО, они ошибочны, а проверенные исключения - это ошибка в дизайне языка Java, которая просто приводит к уродливому, не поддерживаемому коду.