なぜ次のコードはコンパイルされますが、呼び出されるメソッドはException
を投げる必要はありませんか? Exception
はチェックされた例外ではなく、未チェックの例外ではありませんか?どうか明らかにしてください。例外をスローしてキャッチする必要はありませんが、IOExceptionは
class App {
public static void main(String[] args) {
try {
amethod();
System.out.println("try ");
} catch (Exception e) {
System.out.print("catch ");
} finally {
System.out.print("finally ");
}
System.out.print("out ");
}
public static void amethod() { }
}
私はIOexception
とトライキャッチ(チェック例外)を使用したい場合は、この方法がIOException
をスローする必要があると呼ばれています。私はこれを得る。
import java.io.IOException;
class App {
public static void main(String[] args) {
try {
amethod();
System.out.println("try ");
} catch (IOException e) {
System.out.print("catch ");
} finally {
System.out.print("finally ");
}
System.out.print("out ");
}
public static void amethod() throws IOException { }
}
あなたの理解は後ろ向きだと思います。 'throws'宣言は、呼び出し側がキャッチする例外ではなく、呼び出し側によってスローされる、チェックされた例外をリストすることを意図しています。 –