0

methodaccesor の呼び出し関数を使用している関数がありますが、問題は使用しているアプリケーションが非常に広大であるため、この例外 InvocationTargetException がスローされ、その原因が ArrayIndexOutofBounds Exception である場合があります。発生する問題は、比較的少ないトランザクションの 8% で、これが発生します (このシナリオを再現できません)。何が/どのようにこれを引き起こしているのかを突き止めることができません。

どうすればよいか、この問題に関する提案を教えてください。

ここでリフレクターの PropertyUtils クラスを使用しています getindexedproperty が InvocationTargetException を引き起こしています 問題を再現できません これは非常にまれに発生するため

4

1 に答える 1

0

例外をキャッチし、適切なスタック トレースをログに記録しないコードに悩まされている可能性があります。

コード内のそのようなすべてのインスタンスを変更して、代わりにこれを行います。

try {
    // dangerous stuff here
} catch (SomeException e) {
    // Personally, I like to send a stack trace to stderr.
    // You may prefer to print this to your log, eg if you don't capture stderr,
    // or won't/can't for whatever reason.
    e.printStackTrace(System.err);
}

そして、これらの例外がコードのどこから発生したかについて、二度と途方に暮れることはありません。

各 try-catch にアクセスするたびに、そのような失敗に対して本当に堅牢である必要があるかどうかを自問してください。場合によっては、コードがすぐに失敗するようにし、最初から例外をキャッチしないことが最善の方法である場合があります。不正な状態のコード/データが原因でアプリケーションが失敗した場合、迅速に発見し、根本原因へのロードマップ (スタック トレース) を取得します。

于 2013-12-19T05:07:13.767 に答える