Код запуска Java только в том случае, если исключение не выбрасывается в блок try и catch?
Как это сделать, чтобы код выполнялся только в том случае, если не было исключено исключение?
С окончательным кодом запускается ли исключение или нет.
try {
//do something
} catch (Exception e) {}
//do something only if nothing was thrown
Ответы
Ответ 1
Вот два способа:
try {
// do something that may throw an exception
// do something else if an exception was not thrown
} catch (...) {
...
}
Или если вы хотите, чтобы ваш второй блок кода находился вне блока try
:
boolean success = false;
try {
// do something that may throw an exception
success = true;
} catch (...) {
...
}
if (success) {
// do something if no exception was thrown
}
Вы также можете поместить оператор if
в блок finally
, но в вашем вопросе недостаточно информации, чтобы узнать, было бы это предпочтительнее или нет.
Ответ 2
try {
doSomething();
doSomething2();
} catch (Exception e) {
doSomething3();
}
В этом примере doSomething2()
будет выполняться только в том случае, если исключение не генерируется doSomething()
.
Если исключение выбрано doSomething()
, doSomething2();
будет пропущено, и выполнение перейдет к doSomething3();
Также обратите внимание: doSomething3()
будет выполняться, если есть исключение, созданное doSomething2();
Если исключение не выбрано, doSomething3();
не будет выполнено.
Ответ 3
Просто введите код в блок try
. Если выбрано исключение, он перейдет к блоку catch
. Если исключение не будет выбрано, код будет запущен.
try {
someMethodThatMayThrowException();
codeThatShouldBeRunIfNoExceptionThrown();
} catch (SomeException e) {}
Ответ 4
Исключения для управления потоком - это плохая практика. Если вы настаиваете, используйте переменную boolean
.
boolean thrown = false;
try {
//do something
} catch (Exception e) {
thrown = true;
}
//do something only if nothing was thrown
if (!thrown) {
// do stuff
}