РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
445 of 723 menu

Ветка finally

Ветка finally используется в конструкции try и позволяет выполнить блок кода в любом случае: было ли выброшено исключение, было ли оно перехвачено, или же выполнение прошло успешно. Код внутри finally выполняется всегда, даже если внутри try или catch произошел return, break или continue. Ветка finally не принимает параметров и записывается после блоков try и catch.

Синтаксис

try { // code that may throw } catch (e) { // handle exception } finally { // always executed }

Пример

Давайте посмотрим, как работает finally, когда исключение не возникает:

void main() { try { print('try'); } catch (e) { print('catch'); } finally { print('finally'); } }

Результат выполнения кода:

"try" "finally"

Пример

А теперь давайте выбросим исключение и перехватим его, чтобы увидеть, что finally все равно выполнится:

void main() { try { throw Exception('error'); } catch (e) { print('catch'); } finally { print('finally'); } }

Результат выполнения кода:

"catch" "finally"

Пример

Ветка finally выполнится даже в том случае, если внутри try сработает return. Давайте проверим это:

void main() { String res = test(); print(res); } String test() { try { return 'try'; } finally { print('finally'); } }

Результат выполнения кода:

"finally" "try"

Пример

Если внутри finally тоже стоит return, то именно он определит итоговое значение функции, перекрывая return из try:

void main() { String res = test(); print(res); } String test() { try { return 'try'; } finally { return 'finally'; } }

Результат выполнения кода:

"finally"

Смотрите также

  • ключевое слово try,
    которое открывает блок перехвата исключений
  • ключевое слово catch,
    которое перехватывает исключение
  • ключевое слово throw,
    которое выбрасывает исключение
  • ключевое слово on,
    которое перехватывает исключение по типу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить