アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (1件)

1.そのインタフェースで


  public void someMethod() throws HogeException;
 のような定義がされている場合
 HogeExceptionを生成して投げるようにする。
 
2.throws自体が無い場合、
 標準のExceptionに適切なRuntimeExceptionがあるならば、それを生成して投げる
 (例えばNullPointerException)

3.標準の中に適切な例外が無い場合、
 RuntimeExceptionを継承する独自の例外クラスを作成して、それを投げる

ですかねえ?
でも、そもそも1に該当しない場合は、無理やり例外を投げたとしても、そのメソッドの呼び出し元(これもおそらく内製ではないはず)がその例外をcatchしてくれる可能性は低いですよね。
なので「これがおきたら落ちるしかない」ほどの状況でもない限り、「例外を投げない」のが正解な気がします。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/10/07 21:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!