JLS によると、インスタンス変数初期化子または名前付きクラスのインスタンス初期化子がチェック済み例外クラスをスローできる場合、その例外クラスまたはそのスーパークラスの 1 つが各コンストラクターの throws 句で明示的に宣言されていない限り、コンパイル時エラーです。そのクラスであり、そのクラスには少なくとも 1 つの明示的に宣言されたコンストラクターがあります。
だから私はこれを行う場合 -
class A{
{
throw new FileNotFoundException();
}
public A() throws IOException{
// TODO Auto-generated constructor stub
}
}
これにより、コンパイル時に「初期化子は正常に完了する必要があります」というエラーが発生します
その間
class A{
{
File f=new File("a");
FileOutputStream fo=new FileOutputStream(f);
fo.write(3);
}
public A() throws IOException{
// TODO Auto-generated constructor stub
}
}
このコードは、コンパイル時エラーを示していません。コンストラクターで throws 句を宣言したにもかかわらず、前のコードがコンパイルされないのはなぜですか?