2009-04-19 14 views
7

"foo"例外がでない場合、どのようにしてがスローされますが、後でinvoke()を呼び出すと以下の例外がスローされますか?IllegalArgumentException:オブジェクトがクラス宣言のインスタンスでない場合

if (method.getDeclaringClass() != object.getClass()) 
    throw new RuntimeException("foo"); 

method.invoke(object); 

スローされた例外:

java.lang.IllegalArgumentException: object is not an instance of declaring class at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

+1

移動の詳細、たとえばクラス定義を指定できますか? – iny

+0

コースの移動の代わりに – iny

答えて

13

BEH ... method.invoke()コールは直接投げるものではありませんでした。ターゲットメソッドはinvokeも使用していたので投げたので、それは泡立ちました。

教訓:他の例外とは別に、InvocationTargetExceptionを処理します。

+0

hhaaa。私はすでにそれについて考えています:) –

+0

ああ...その人は厄介です! –

+8

だから、常に完全なスタックトレースを見てください。 –

関連する問題