• 締切済み

例外処理についてご相談

こんばんは。 とあるユーザー定義例外クラスがあるとします。 でこれのコンストラクタが sendException (String errId) sendException (String errId,String errMsg) sendException (String errId,String errMsg,Throwable e) と3種類あるとします。 でCatchする方の記述で困っています。 実は上記例外の送出は既存システムで、3種類全て使用されているのです。 つまり最初の xxxException (String errId) が送出されてきて、Catch側で「Throwable e」を取り出そうとしたら 「NullPointerException」が発生するような気がします。 Catch側でどのコンストラクタでExceptionが生成されたか、チェック する方法はありますでしょうか?。 CatchしたExceptionのプロパティのNull確認をするしかありませんでしょうか・・。 アドバイスお願いします。

みんなの回答

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.2

もし、NullPointerExeptionになるのであれば、その「とあるユーザ定義例外クラス」の作りがそもそも間違ってるってことだとおもいますが。 普通は例外クラス自身がThrowableなんだから、もし、コンストラクタからの引数がnullなら、自分自身を渡すとか そういうgetThrowable()メソッドを作るんじゃない?

noname#46520
質問者

お礼

皆様有難うございました。 解決致しました。

回答No.1

>Catch側でどのコンストラクタでExceptionが生成されたか、チェックする方法はありますでしょうか? そのようなことができる一般的な方法はありません。 >CatchしたExceptionのプロパティのNull確認をするしかありませんでしょうか・・。 それで区別できるなら、それでかまわないのではないでしょうか。 >Catch側で「Throwable e」を取り出そうとしたら「NullPointerException」が発生するような気がします。 sendException (String errId,String errMsg)で作ったオブジェクトのそのプロパティにアクセスした場合にNullPointerExceptionが投げられるか、それとも単にnullが返ってくるかはその仕様次第ですから、なんとも推測しようがありません。「気がします」でなく、とにかく当該クラスの仕様を確認してください。仕様が無かったり書かれていなければ、その例外クラスはもはや使い物になりませんね……。