November 23, 2021

Обработка Exception в Java ч 3. Cheked vs Uncheked

Uncheked - не проверяемые исключения

Cheked - проверяемые исключения

Любое исключение в java либо cheked, либо uncheked. Свойство Cheked/Uncheked передается по наследству.

Проверка кода в Java выполняется два раза: в момент компиляции и в момент выполнения. Cheked исключения проверяются на всех этапах компиляции, uncheked только в момент выполнения. Компилятор проверяет: вылетает из метода исключение или нет.

Uncheked

public void test() {
    throw new RuntimeException()
}

Компилятор игнорирует RuntimeException и всех его потомков. Программа скомпилируется, но упадет при выполнении.

public void test() {
        throw new Exception();
    }

Этот код компилятор уже не пропустит т.к. Exception это cheked исключение, и из метода main вылетит исключение.

Cheked

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


public void test() {
    try {
        throw new Exception();
    } catch (Exception ex) {  //обработка исключения
    }
}

Компилятор не ругается. Блок catch ловит и обрабатывает исключение.

public void test() throws Exception {
    throw new Exception();
}

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

<--- Часть 2

Содержание

Часть 4 --->