[解決済み】 java.lang.reflect.InvocationTargetException の原因は何でしょうか?
質問
さて、何が原因なのか理解し読もうとしたのですが、どうしても理解できません。
私のコードのどこかにこんなものがあります。
try{
..
m.invoke(testObject);
..
} catch(AssertionError e){
...
} catch(Exception e){
..
}
問題は、あるメソッドを呼び出そうとしたときに
InvocationTargetException
の代わりに、他の期待される例外(具体的には
ArrayIndexOutOfBoundsException
).
どのメソッドが呼び出されたのかが分かっているので、このメソッドのコードに直接アクセスして、次のような行にトライ・キャッチ・ブロックを追加しました。
ArrayIndexOutOfBoundsException
を投げると、本当に
ArrayIndexOutOfBoundsException
は予想通りでした。しかし、上に行くときは
に変更されます。
InvocationTargetException
で、上のコードでは
catch(Exception e)
eは
InvocationTargetException
であって
ArrayIndexOutOfBoundsException
は期待通りです。
このような動作の原因は何でしょうか、またそのようなことを確認するにはどうしたらよいのでしょうか。
解決方法は?
リフレクションでメソッドを呼び出すことで、抽象化のレベルを追加しています。リフレクション層はどんな例外も
InvocationTargetException
という例外を区別することができます。
実際に
リフレクションの呼び出しに失敗したことによるもの(たとえば、引数リストが有効でなかったとか)と、呼び出されたメソッド内の失敗によるものです。
の中にある原因を解きほぐすだけです。
InvocationTargetException
をクリックすると、元のものにたどり着きます。
関連
-
[解決済み] Java の条件付きコンパイル:コードチャンクをコンパイルしないようにするには?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み】Exceptionを投げるとき、どの部分が高価なのですか?
-
[解決済み】再試行キャッチはどのように実装するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 未処理の例外タイプIOException」が表示されるのですが?
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] ORA-01654: インデックスを拡張できません。
-
[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
-
[解決済み] javaでAnnotation Inheritanceのようなものはあるのでしょうか?
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] init-paramとcontext-param
-
[解決済み] java swingアプリケーションでJCEがプロバイダBCを認証できない
-
[解決済み] .lengthが解決できない、またはフィールドでない