- ベストアンサー
オーバーライドしたメソッドで例外を投げたいとき
お世話になります。 あるinterfaceを実装するクラスを作成しています。 そこでinterface内のメソッドを実装するわけですが、そこで例外を生成しthrowしたいと思っています。ですが、interfaceでそのメソッド定義にはその例外をthrowするようには定義されていないので、コンパイル時にエラーになります。 今は強引にNullPointerExceptionを生成するようなコードを書いて例外を発生させていますが、このようなケースではどのように記述するのが一般的なのでしょうか。 interfaceは内製ではないので変更することができません。 よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1.そのインタフェースで public void someMethod() throws HogeException; のような定義がされている場合 HogeExceptionを生成して投げるようにする。 2.throws自体が無い場合、 標準のExceptionに適切なRuntimeExceptionがあるならば、それを生成して投げる (例えばNullPointerException) 3.標準の中に適切な例外が無い場合、 RuntimeExceptionを継承する独自の例外クラスを作成して、それを投げる ですかねえ? でも、そもそも1に該当しない場合は、無理やり例外を投げたとしても、そのメソッドの呼び出し元(これもおそらく内製ではないはず)がその例外をcatchしてくれる可能性は低いですよね。 なので「これがおきたら落ちるしかない」ほどの状況でもない限り、「例外を投げない」のが正解な気がします。
お礼
ああ、そうですね。そうでした。RuntimeExceptionなら投げられますね。 なんかできるはずだったなあ、と思いつつ、ググってみたりしたのですが、キーワードが悪かったせいか、見つけることができず、「あれ、できないんだっけ」とか思ってました。 これで解決します。ありがとうございました。