Должны ли блоки catch использоваться для написания логики, например, для управления потоком и т. Д.? Или просто для того, чтобы бросать исключения? Влияет ли это на эффективность или удобство сопровождения кода?
Каковы побочные эффекты (если они есть) написания логики в блоке catch?
РЕДАКТИРОВАТЬ:
Я видел класс Java SDK, в котором они написали логику внутри блока catch. Например (фрагмент взят из java.lang.Integer
класса):
try {
result = Integer.valueOf(nm.substring(index), radix);
result = negative ? new Integer(-result.intValue()) : result;
} catch (NumberFormatException e) {
String constant = negative ? new String("-" + nm.substring(index))
: nm.substring(index);
result = Integer.valueOf(constant, radix);
}
EDIT2 :
Я проходил урок, где они считают это преимуществом написания логики исключительных случаев внутри исключений:
Исключения позволяют вам написать основной поток вашего кода и иметь дело с исключительными случаями в другом месте.
Какие-то конкретные рекомендации, когда писать логику в блоке catch, а когда нет?