package com.javarush.task.task09.task0917;
/*
Перехват unchecked-исключений
*/
public class Solution {
public static void main(String[] args) {
processExceptions(new Solution());
}
public static void processExceptions(Solution obj) throws RuntimeException{
try
{
obj.method1();
obj.method2();
obj.method3();
}
catch (RuntimeException e){
printStack(e);
}
}
public static void printStack(Throwable throwable) {
System.out.println(throwable);
for (StackTraceElement element : throwable.getStackTrace()) {
System.out.println(element);
}
}
public void method1() {
throw new NullPointerException();
}
public void method2() {
throw new IndexOutOfBoundsException();
}
public void method3() {
throw new NumberFormatException();
}
}
Евгений
20 уровень
не понимаю почему программа принимает ответ ведь я сначала говорю ей игнорировать RuntimeException, а потом отлавливать
Решен
Комментарии (6)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
DimaExpert
12 октября 2018, 08:18
сообщает вызывающему методу о потенциальной возможности получить исключение, а
это же исключение сами и обрабатываете.
Смысла использовать и catch и throws в одном и том же методе нет.
0
Евгений
12 октября 2018, 09:37
так я и не пойму почему они не конфликтуют
0
DimaExpert
12 октября 2018, 09:46
почему они должны конфликтовать?
0
Евгений
12 октября 2018, 09:58
хотя да, наверное ты прав))) просто рассуждал что вначале мы ему сообщили что не обращай внимания на RuntimeException, а после смотри у нас есть то на что мы просили тебя закрыть глаза
0
Стас Пасинков Software Developer в Zipy Master
12 октября 2018, 09:58
потому что printStack(), который ты вызываешь в кетче - тоже может кинуть RuntimeException :) это же не проверяется никак. какой-то RuntimeException может вообще в любом месте вылезти.
а так ты просто задекларировал, что твой метод processExceptions() может кидать RuntimeException. собственно, любой метод можно так обозначить.
+2
Евгений
12 октября 2018, 10:01
всем спасибо)))
0