• ベストアンサー

オーバーライドしたメソッドで例外を投げたいとき

お世話になります。 あるinterfaceを実装するクラスを作成しています。 そこでinterface内のメソッドを実装するわけですが、そこで例外を生成しthrowしたいと思っています。ですが、interfaceでそのメソッド定義にはその例外をthrowするようには定義されていないので、コンパイル時にエラーになります。 今は強引にNullPointerExceptionを生成するようなコードを書いて例外を発生させていますが、このようなケースではどのように記述するのが一般的なのでしょうか。 interfaceは内製ではないので変更することができません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kztk
  • ベストアンサー率53% (59/110)
回答No.1

1.そのインタフェースで   public void someMethod() throws HogeException;  のような定義がされている場合  HogeExceptionを生成して投げるようにする。   2.throws自体が無い場合、  標準のExceptionに適切なRuntimeExceptionがあるならば、それを生成して投げる  (例えばNullPointerException) 3.標準の中に適切な例外が無い場合、  RuntimeExceptionを継承する独自の例外クラスを作成して、それを投げる ですかねえ? でも、そもそも1に該当しない場合は、無理やり例外を投げたとしても、そのメソッドの呼び出し元(これもおそらく内製ではないはず)がその例外をcatchしてくれる可能性は低いですよね。 なので「これがおきたら落ちるしかない」ほどの状況でもない限り、「例外を投げない」のが正解な気がします。

annyG
質問者

お礼

ああ、そうですね。そうでした。RuntimeExceptionなら投げられますね。 なんかできるはずだったなあ、と思いつつ、ググってみたりしたのですが、キーワードが悪かったせいか、見つけることができず、「あれ、できないんだっけ」とか思ってました。 これで解決します。ありがとうございました。

関連するQ&A

専門家に質問してみよう