наконец в обработке исключений

Что точно делает a finally блок в обработке исключений работает?

5
задан Michael Myers 24 March 2010 в 16:39
поделиться

4 ответа

Он содержит код, который должен выполняться всегда, независимо от того, возникает ли исключение.

Например, если вы открыли файл, вы должны закрыть его в блоке finally , чтобы он всегда был закрыт; если вы закрыли его в блоке try , более раннее исключение заставило бы выполнение перейти прямо к блоку catch и пропустить закрытие файла.

Подробнее см. Учебные пособия по Java .

8
ответ дан 18 December 2019 в 09:48
поделиться

Он выполняется независимо от того, попали вы в блок catch или нет, а это означает, что это отличное место для удаления объектов и выполнения других операций по очистке.

3
ответ дан 18 December 2019 в 09:48
поделиться

Я часто использую его для очистки открытых ресурсов, когда в блоке кода есть несколько операторов возврата, что делает код намного чище, чем вы ' Перед каждым оператором возврата необходимо клонировать один и тот же код «закрытия ресурса». Гарантируется, что код вызовет секцию finally, даже если вы вернетесь в секции try. Это также помогает с безопасностью кода в этом случае, поскольку программист может легко случайно пропустить его.

2
ответ дан 18 December 2019 в 09:48
поделиться

Блок finally выполняется всегда, независимо от того, было ли создано исключение. Классический пример использования, который я могу придумать, - это закрытие файлов.

FileOutputStream stream = null;
try{
    // do stuff with the stream here
} catch (IOException ex){
    // handle exception
} finally{
    // always close the stream
    if(stream != null){
        stream.close();
    }
}
4
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: