method1
に例外をスローする例外をスローするmethod2
例外チェーンがありmain
ます。何らかの理由で、コンパイラはエラーを処理するように強制し、処理しmethod2
ない場合はエラーとしてマークし、チェックされた例外であることを示します。しかし、同じException
ことが行のさらに下にスローされるmain
と、コンパイラはそれを無視することを許可し、エラーを表示しません。
の元の例外method1
は、ParseException
チェックされる です。しかし、メソッドthrows Exception
にはヘッダーにジェネリック句があり、同じオブジェクトが同一の句を持つ method2 にスローされますthrows Exception
。この例外は、コンパイラによってチェック/キャッチされた状態をいつ、どのように失いますか?
明確にするために編集:
public void method1() throws Exception{
// code that may generate ParseException
}
public void method2() throws Exception{
method1(); //compiler error (if the throws clause is left out)
}
public static void main(String[] args){
method2(); //ignored by compiler, even though the exception isn't caught or thrown or handled at all
}
編集:
申し訳ありませんが、質問は間違いに基づいていました... main メソッドには、実際throws Exception
には欠落している節がありました。それを削除したところ、コードは期待どおりに動作するようになりました。助けてくれてありがとう!