次のコードがあります。
method1() throws Exception{
//throws an Exception
}
method2() throws Exception{
method1();
//do something
}
method3() throws Exception{
method2();
//do something
}
method4() throws Exception{
try{
method3();
//do something
}catch(Exception e){
//catch exception
}
}
method1() で例外が発生すると、method4() までバブルアップし、そこでキャッチされます。
しかし、これに似た質問に対するいくつかの回答で、例外が次の方法でスローされていることがわかりました。
method1() throws Exception{
//throws an Exception
}
method2() throws Exception{
try{
method1();
}catch(Exception e){
throw e;
}
}
例外を再スローする最良の方法は何ですか? なぜそれが良いのですか?
「例外処理」のベスト プラクティスについて私が読んだ記事では、早い段階でスローし、遅い段階でキャッチするように書かれています。内部メソッドから可能な限り Exception を再スローする必要があるということですか?
method1() が SQLException をスローした場合、それを method4() でのみキャッチするか、method1() 自体で処理する必要がありますか?
更新: method1() で例外が発生した場合、UI にメッセージを表示したいとします。次に、解決策は何ですか?バブルアップするか、問題を示す値を返す必要がありますか?
method4() は、UI に何らかのメッセージを表示します。