Java не печатает сообщения после блока `finally`

Этот вопрос относится к блокам finally в Java. Здесь не печатается «остальная часть кода», которая находится после блока finally.

Но когда исключения нет, он напечатает все, что находится после блока finally.

class TestFinallyBlock1 {  
    public static void main(String args[]) {  
        try {  
            int data=25/0;  
            System.out.println(data);  
        }  
        catch(NullPointerException e) {
           System.out.println(e);
        }  
        finally {
           System.out.println("finally block is always executed");
        }  

        System.out.println("rest of the code...");  
    }  
}  
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
299
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Поскольку вы не перехватили java.lang.ArithmeticException, и в этот момент код завершается.

Попробуй это:

class TestFinallyBlock1 {
    public static void main(String args[]) {
        try {
            int data = 25 / 0;
            System.out.println(data);
        } catch (Exception e) {
            System.out.println(e);
        } finally {
            System.out.println("finally block is always executed");
        }
        System.out.println("rest of the code...");
    }
}

ох..да.правильно. так что это также может быть обработано ArithmeticException. спасибо.

pnmhtkr 30.03.2018 14:44

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

Kerry Gougeon 06.04.2018 05:44

Другие вопросы по теме