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