IOException vs RuntimeException Java
class Y {
public static void main(String[] args) throws RuntimeException{//Line 1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws RuntimeException{ //Line 2
if (Math.random() > 0.5) throw new RuntimeException(); //Line 3
throw new IOException();//Line 4
}
}
Kiedy rzucam dwa rodzaje wyjątków (IOException w Line4 i RunTimeException w Line3), odkryłem, że mój program nie kompiluje się, dopóki nie wskażę „IOException” w moich klauzulach rzutów w wierszu 1 i linii 2.
Podczas gdy jeśli odwrócę „rzuty” w celu wskazania wyjątku IOException, program kompiluje się pomyślnie, jak pokazano poniżej.
class Y {
public static void main(String[] args) throws IOException {//Line1
try {
doSomething();
}
catch (RuntimeException e) {
System.out.println(e);
}
}
static void doSomething() throws IOException {//Line 2
if (Math.random() > 0.5) throw new RuntimeException();//Line 3
throw new IOException();//Line 4
}
}
Dlaczego zawsze powinienem używać „rzutów” dla IOException, nawet jeśli wyjątek RuntimeException jest także generowany (Linia 3)?