Java

Проверить что был отловлен Exception?

У меня такая структура кода:

try {}
catch {}
catch {}
catch {}
catch {}
...

finally как известно выполняется всегда
А мне нужен блок который бы выполнился только если exception не был отловлен
Пока в голову приходит только "пихнуть" return в каждый catch
Есть ли варианты "покрасивей"?
Либо я не понял вопроса, либо ответ слишком очевиден. В блоке try ты пишешь код, который потенциально может выбросить исключение. Код, который идет после строки, которая, потенциально, может привести к исключительной ситуации, выполняется только в том случае, если исключения не возникло. Если же в строке возникает исключительная ситуация, то дальнейший код не выполняется, а управление переходит к блоку catch.

try {
<код, который может выбросить исключение>;
<дальнейший код, который выполняется только в том случае, если исключения не возникло>; //Как я понял, это то, что тебе нужно
} catch (<класс исключения> <переменная>) {
<то, что мы делаем, если исключение возникло>;
} finally {
<то, что мы делаем в любом случае>;
}
Greek Greek
Greek Greek
2 368
Лучший ответ
Олег Назаренко да чего-то затупил дико, так как Вы предлагаете и написал тогда
Вы правильно поняли
до трай-кетч объявит переменную строковую, в нее записать исключение в теле трай-кетч.
в файнали проверить если переменная не нулевой длины, то есть в нее попали какие-то исключения, то показать ее.
костыль, но как-то так ...
СВ
Семён Власов
53 118
Олег Назаренко Зачем тогда finally вообще?
Да и зачем именно строковую? Булева ведь тоже подойдет.
Чуть лучше, чем return, но по сути одно и тоже
а как вам такой костыль - отлавливать можно исключения определенного типа указав этот тип возле catch.
Берем напиливаем свой myException(ничего особенного, просто это должно быть исключение которое не выбросится внутри try кроме как по вашему заказу)
Когда доходим до конца блока try кидаем myException и в catch, который его отлавливает творим действия которые соответствуют сценарию отсуствия исключений :)

наркомания однако xD
если не хотите пихать в каждый catch изменение флага или особый return то вот ещё вариант:
начальное значение флага должно говорить о том что исключение есть, и только когда мы доходим до конца try мы меняем его на то что исключений небыло

аля

bool isFailed = true;
try
{
...
isFailed = false;
}
catch (Exception e) { ...}

if (isFailed) System.out.println("Exception occurred");
else System.out.println("All ok");