У меня такая структура кода:
try {}
catch {}
catch {}
catch {}
catch {}
...
finally как известно выполняется всегда
А мне нужен блок который бы выполнился только если exception не был отловлен
Пока в голову приходит только "пихнуть" return в каждый catch
Есть ли варианты "покрасивей"?
Java
Проверить что был отловлен Exception?
Либо я не понял вопроса, либо ответ слишком очевиден. В блоке try ты пишешь код, который потенциально может выбросить исключение. Код, который идет после строки, которая, потенциально, может привести к исключительной ситуации, выполняется только в том случае, если исключения не возникло. Если же в строке возникает исключительная ситуация, то дальнейший код не выполняется, а управление переходит к блоку catch.
try {
<код, который может выбросить исключение>;
<дальнейший код, который выполняется только в том случае, если исключения не возникло>; //Как я понял, это то, что тебе нужно
} catch (<класс исключения> <переменная>) {
<то, что мы делаем, если исключение возникло>;
} finally {
<то, что мы делаем в любом случае>;
}
try {
<код, который может выбросить исключение>;
<дальнейший код, который выполняется только в том случае, если исключения не возникло>; //Как я понял, это то, что тебе нужно
} catch (<класс исключения> <переменная>) {
<то, что мы делаем, если исключение возникло>;
} finally {
<то, что мы делаем в любом случае>;
}
до трай-кетч объявит переменную строковую, в нее записать исключение в теле трай-кетч.
в файнали проверить если переменная не нулевой длины, то есть в нее попали какие-то исключения, то показать ее.
костыль, но как-то так ...
в файнали проверить если переменная не нулевой длины, то есть в нее попали какие-то исключения, то показать ее.
костыль, но как-то так ...
Олег Назаренко
Зачем тогда finally вообще?
Да и зачем именно строковую? Булева ведь тоже подойдет.
Чуть лучше, чем return, но по сути одно и тоже
Да и зачем именно строковую? Булева ведь тоже подойдет.
Чуть лучше, чем 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");
Берем напиливаем свой 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");
Похожие вопросы
- STOP 0x0000003B SYSTEM_SERVICE_EXCEPTION. Синий экран смерти
- Бывают ли случаи, когда чужие кошки могут сгрызть котят другой кошки? И как можно отловить чужую кошку?
- Нужна помощь. Напишите текст песни Paramore - The only exception!
- что делать комп пишет Exception Processing Message c0000013 Parameters 75b6bf7c 4 75b6bf7c .
- крашит самп. ошибка: SA-MP 0.3.7 Exception At Address: 0x0056F348 Base: 0x03840000
- MC Bungeecord:Ошибка Exception in thread main Server Auth (priority 0) is not defined что делать?
- Sqlite3 python ошибка: Error user-defined function raised exception
- Где такую живность можно отловить? Как звать насекомую ?
- c# (отловить комбинацию клавиш в системе)
- Ошибка при запуске GTA 4: Исключение unknown software exception (0xc000001d) в приложении по адресу 0x00587550
Вы правильно поняли