Обработка 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();
}Метод кидает исключение. Ключевое слово говорит о том что метод может кинуть исключение. Это необходимо для того что бы код, который вызвал этот метод, знал о том что может прилететь исключение, и с этим надо что-то делать.