November 23, 2021
Обработка Exception в Java ч 1. Try catch finally.
Что такое исключение?
Исключение - это "нежелательное или неожиданное событие", которое происходит во время выполнения программы, то есть во время исполнения, и нарушает нормальный ход выполнения инструкций программы.
Если простыми словами, то эта "штука" которая "ломает" стек:
Почему возникает исключение?
Исключение может возникнуть по нескольким причинам, таким как проблема с сетевым соединением, неправильный ввод данных пользователем, открытие несуществующего файла в вашей программе и т.д.
Блоки и ключевые слова, используемые для обработки исключений
- try содержит код, в следствии которого может прилететь исключение.
- catch : за блоком try следует блок catch, который обрабатывает исключение, возникающее в связанном блоке try.
- finally: Выполняется после блока catch. Блок срабатывает вне зависимости от того, было исключение или нет. Грубо говоря перед тем как покинуть try catch, всегда сработает finally. Если в try прилетело исключение и блок catch отсутствовал, код находящийся в finally выполнится и исключение полетит дальше.
Если нет блока catch:
Примеры кода
Пример 1:
public class Test00 { public static void main(String[] args) { System.err.println("one:before"); try { one(); } finally { System.err.println("one:finally"); } System.err.println("one:after"); } public static void one(){ System.err.println("two:before"); try { two(); } catch (Error e) { System.err.println("two:catch"); } System.err.println("two:after"); } public static void two(){ throw new Error(); } }
one:before two:before two:catch two:after one:finally one:after
Пример 2:
public class Test01 { public static void main(String[] args) { System.err.println("one:before"); one(); System.err.println("one:after"); } public static void one() { System.err.println("two:before"); try { two(); } finally { System.err.println("two:finally"); } System.err.println("two:after"); } public static void two() { throw new Error(); } }
one:before two:before two:finally Exception in thread "main" java.lang.Error
Пример 3:
public class Test03 { public static void main(String[] args) { System.err.println("one:before"); try { one(); } catch (Error e) { System.err.println("one:catch"); } System.err.println("one:after"); } public static void one() { System.err.println("two:before"); try { two(); } catch (Error e) { System.err.println("two:catch"); } System.err.println("two:after"); } public static void two() { throw new Error(); } }
one:before two:before two:catch two:after one:after