4

次のような別のメソッドを呼び出すメソッドがあります。

public void m1() {
    m2(10);
}

public void m2(int v) {
    if(v < 10)
        throw new MyException();
}

public class MyException extends RuntimeException{ }

m1()ここで、使用しようとしているクライアントに、それがスローされる可能性があることを通知したいと思いますMyException。次のように宣言しても問題ありませんか。

public void m1() throws MyException{
    m2(10);
}

throwsチェック済みの例外で宣言を使用していたので、よくわかりません。チェックされていないものでそうするのは一般的ですか?

4

2 に答える 2

7

あなたそうすることができます - そしてそれは Javadoc に現れると私は信じています。ただし、呼び出し元に例外の処理を強制することはないので、基本的にはユーザー (コードを呼び出している開発者) がドキュメントを十分に確認することに依存しています。それで十分な場合は、それを選択してください。それ以外の場合はMyException、チェック済み例外に変更してください。

スローされる可能性のあるチェックされていない例外を宣言するのが一般的かどうかについては、特に驚くことではないほど頻繁に見てきましたが、広く使用されているわけではありません。

于 2016-05-29T07:24:22.850 に答える
3

句で未チェックの例外を宣言できますthrowsが、指摘したように、メソッドがスローする可能性があることを示す以外に、実際の影響はありません。そうすることは決して珍しいことではなく、JDK はこのアプローチを取っているようです (たとえば、 を参照Integer#parseInt)。

句で宣言するかどうかに関係なくthrows、メソッドの javadoc に文書化する必要があります。これは、メソッドを使用する人々がおそらく最初に目にする場所です。

于 2016-05-29T07:25:17.763 に答える