почему блок finally не выполняется?

Почему, наконец, блок этого кода не выполняется? он печатает только 1. Блок finally не выполняется после System.exit(0);?

    void method2() {
    try {
        System.out.println("1");
        System.exit(0);
    } finally {
        System.out.println("3");
    }
}

person User3031    schedule 03.11.2015    source источник
comment
Код не продолжает выполняться после завершения работы приложения. Почему вы думаете иначе?   -  person David    schedule 03.11.2015


Ответы (4)


System.exit (0) фактически полностью останавливает выполнение программы. Удалите System.exit, поскольку на самом деле вы не пытаетесь выйти из кода там.

person basic    schedule 03.11.2015

Удалите SYSTEM.EXIT, потому что это закрывает всю программу независимо от того, что следует за ней. Хотя он находится в режиме попытки, он все равно входит в блок кода :)

person colt    schedule 03.11.2015

System.exit(0) завершает выполнение еще до того, как блок finally будет выполнен. Переместите его в блок finally после вашего System.out.

person The Law    schedule 03.11.2015

System.exit(); выключает виртуальную машину. Единственное, что может быть выполнено после этого, - это обработчик выключения, созданный с помощью Runtime.addShutdownHook(Thread).

person Kayaman    schedule 03.11.2015