web-dev-qa-db-ja.com

例外がサードパーティに飲み込まれたときに根本原因を見つけるための最良の戦略

サードパーティのAPIが不完全なスタックトレースで不平を言うシナリオに全員が遭遇したと私は確信しています。本質的に、サードパーティのAPIでのエラー処理は次のようなものです。

catch (WhateverException e) {
   throw new ConfusingException("Something terrible happened, BUT I won't tell you what!");
}

ここで、ConfusingExceptionがスローされた場合、2番目のパラメーターで原因としてWhateverExceptionが渡されないため、このAPIを使用しているユーザーが例外を取得しても、トレース全体を取得できません。残念なことに、そのようなコードを書いている人はよく見られますが、コードを制御できないと状況は悪化します。

状況に直面したときに従う戦略は何ですか?WhateverExceptionが発生した例外メッセージと行をどのように見つけますか?

4
Yazad

最善の機会は、デバッガーを使用してアプリケーションを実行し、その行(またはConfusingExceptionのコンストラクター)にブレークポイントを設定することです。

ソースが使用できない場合、サードパーティのアプリケーションでもブレークポイントを設定できます。この場合と同様に、メソッドまたはConfusingException here が推奨されます。

8