недостижимое утверждение после блокировки наконец - PullRequest
0 голосов
/ 13 сентября 2018

Я изучаю исключения в Java и сталкиваюсь с ошибкой компиляции в этом примере:

public class FinallyExceptionExample {
    public static void main (String[] args) throws Exception {
        try {
            System.out.println("1");
            throw new Exception();
        } finally{
            System.out.println("3");
        }
        System.out.println("4");
    }
}

Исключение составляет "недостижимый оператор" для строки:

System.out.println("4");

Мне интересно, почему я получаю эту ошибку, обычно после того, как мы наконец продолжаем выполнение кода?

Ответы [ 4 ]

0 голосов
/ 13 сентября 2018

С Документация Oracle

Блок finally всегда выполняется при выходе из блока try.Это гарантирует, что блок finally выполняется даже в случае непредвиденного исключения.Но, наконец, полезно не только для обработки исключений, но и позволяет программисту избежать случайного обхода кода очистки при возврате, продолжении или разрыве.Размещение кода очистки в блоке finally всегда является хорошей практикой, даже если исключений не ожидается.

Помните: finally не перехватывает исключение!

0 голосов
/ 13 сентября 2018

Оператор finally не перехватывает исключения, выданные в блоке try.Только catch операторы могут перехватывать исключения.

Следовательно, System.out.println("4"); никогда не достигается, поскольку блок try всегда генерирует необработанное исключение.

0 голосов
/ 13 сентября 2018

Вы бросаете исключение, не ловя его. Это приведет к досрочному прекращению выполнения кода и никогда не достигнет последней строки.

0 голосов
/ 13 сентября 2018

вы не уловили свое исключение.поэтому печатается 1, выполняется блок finally, а затем генерируется исключение.4 никогда не будет называться

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...