О ваще
Я знаю finally
Цель состоит в том, чтобы гарантировать выполнение некоторых инструкций или кода очистки. Но какова разница в использовании finally
или поставить код после блока catch.
Я имею в виду, приведите пример случая, когда вам нужно использовать finally
потому что в противном случае код может не выполняться вообще.
5 ответов
Наконец, будет выполнено рассмотрение того, что происходит в блоке catch. Существует несколько случаев.
catch(Exception E)
{
...
throw new OtherException(BetterMessage, E);
}
или же
catch { return null; }
или же
catch { SomeMethodThatWillThrowAnException(); }
Таким образом, даже если вы вернете или сгенерируете исключение для выхода из блока Catch, вы все равно будете выполнять блок finally, в то время как любой код просто после try-catch будет игнорироваться.
Наконец выполняется независимо от того, что.
Один пример
public void test() {
try {
int x = 0;
return;
} catch(Exception ex) {
ex.printStackTrace();
} finally {
System.out.println("Hello from finally");
}
System.out.println("Hello from after catch");
}
В этом случае "Hello from after catch" не будет напечатано, а "Hello from finally" будет.
finally
блок выполняется независимо от того, выброшено исключение или нет.
Ваш вопрос, в чем разница использования finally
и поставить код после catch
блок. Если выдается исключение, код после catch
блок не будет выполнен. Если вы поместите код в finally
Блок, это будет.
Наконец, блок будет стрелять, несмотря ни на что, даже если вы бросаете и ловите. Код, помещенный после перехвата, который не находится в блоке finally, может не выполняться, например, если перехват может привести к завершению процесса или к аварийному завершению приложения.
Может произойти исключение, которое вы не поймаете. finally
Блок гарантирует выполнение кода внутри него, даже если генерируется непредвиденное исключение.