2011-12-06 9 views
2

(未チェック例外)を宣言する利点は、メソッドシグニチャb/cに沿って例外をスローすると、呼び出し元がtry catchブロックに保持されないことになります。Java RuntimeExceptionを投げることの利点

public void testRuntimeEx()throws RuntimeException{ 

if(1==1){throw new RuntimeException()} 

} 

//Caller method 
public void testCaller(){ 
// not necessery to handle even caller does not known which RuntimeException might be throws then what is the benefit throws clause with method signature 
testRuntimeEx(); 

} 
+0

これはチェックされていないため、宣言する必要はありません。 – edwardw

答えて

0

カスタムのチェックされていない例外をスローすると、むしろシステム例外をキャッチし、チェックされていない例外もキャッチすることはありません。

3

それはまだあなたが一般的なのRuntimeExceptionを使用していますが、例外:IllegalArgumentExceptionような、より具体的なものやUnsupportedOperationExceptionまたはIndexOutOfBoundsExceptionともそれが起こるときになど、いくつかのJavaDocを追加しない場合は特に、ドキュメントとして機能します。

例のコードスニペットでは、それはかなり意味がありません。

2

この宣言は、このコードを使用してRuntimeExceptionをスローする開発者の信号です。 しかし、それは良いにおいがしません。

P.S.投稿したコードはコンパイルされません。

throw RuntimeException 

これは正しい投げ方ではありません。

1

通常、呼び出し元は例外とは関係ありません。それをキャッチし、他の例外でラップして、再びスローします。または、throwsキーワードを使用して例外を宣言し、例外の場合はこのタイプに対して透過的になります。

通常、ビジネスコードを記述し、すべての例外を処理する1つの集中化された場所があるアプリケーションでは、このような状況が一般的です。 APIでは正しくありません。たとえば、SSHを実装しているライブラリを使用している場合、何かがうまくいかないときにIOExceptionを投げる(またはさらに特殊化する)ことを期待しています。

関連する問題