Исключение составляет дорогое операция.Итак, если вы рассматриваете две альтернативы - бросание и не бросание, то не бросание является предпочтительным способом.
Однако, используя исключение в качестве входного параметра для doStuffWithException
в try-block
, похоже на небольшой код.Итак, я бы предложил реорганизовать логику обработки исключений, чтобы она не зависела от исключения в качестве входного параметра.
Если вы обрабатываете исключительную ситуацию в зависимости от исключительных данных - извлеките эти данные и перейдите к методу handle
.По сути, не используйте исключения в качестве DTO или POJO (поскольку исключения не предназначены для этой цели).
Подводя итог, я предлагаю иметь что-то вроде следующих фрагментов:
try {
throwCheckedException();
if (!someBoolean) {
Data data = createData();
handle(data);
}
} catch (IOException e) {
Data data = createDataFromMessage(e.getMessage());
handle(data);
}
В качестве альтернативы, чтобы уменьшить вложенность внутри try-block
:
try {
throwCheckedException();
} catch (IOException e) {
Data data = createDataFromMessage(e.getMessage());
handle(data);
}
if (!someBoolean) {
Data data = createData();
handle(data);
}