2016-05-26 3 views
-1

例外が呼び出されたメソッドからスローしたときに例外をキャッチしてスローできません。C#のリプレイ(method.invoke)で例外を処理する方法try catchを使用して

`try 
{ 
    Type type = Type.GetType("abc"); 
    Object obj = Activator.CreateInstance(type); 
    MethodInfo methodInfo = type.GetMethod("xyz"); 
    object[] parameters = { new object[] { Json } }; 
    response = (methodInfo.Invoke(obj, parameters)); 
} 
catch 
{ 
    throw; 
} 
` 
+0

を使用してVisual Studioでスローされる例外を許可することを忘れないでください/ help/how-to-ask)。 –

答えて

0

問題はあなたのコードにはありません。コードの実行を続行してください。 Debug/Exceptionsメニューで、すべてのチェックを削除します。それは動作するはずです。リフレクションを使用して

try 
{ 
    Type type = Type.GetType("abc"); 
    Object obj = Activator.CreateInstance(type); 
    MethodInfo methodInfo = type.GetMethod("xyz"); 
    object[] parameters = { new object[] { Json } }; 
    response = (methodInfo.Invoke(obj, parameters)); 
} 
catch (Exception ex) 
{ 
    Debug.WriteLine(ex.Message); 
} 
0

呼び出すメソッド呼び出しからスローされた例外は、()System.Reflection.TargetInvocationExceptionのラッピング例外インスタンスです。後の実際の例外はInnerExceptionになります。そして、(http://stackoverflow.com [「どのように私は良い質問をするのですか?」]をお読みくださいデバッグ - > Exception->

try 
{ 
Type type = Type.GetType("abc"); 
Object obj = Activator.CreateInstance(type); 
MethodInfo methodInfo = type.GetMethod("xyz"); 
object[] parameters = { new object[] { Json } }; 
response = (methodInfo.Invoke(obj, parameters)); 
} 
catch (TargetInvocationException ex) 
{ 
    ex = ex.InnerException; // ex now stores the original exception 
} 
関連する問題