gpt4 book ai didi

c# - 调用目标抛出异常(MethodBase.Invoke 方法)

转载 作者:太空狗 更新时间:2023-10-30 00:18:39 26 4
gpt4 key购买 nike

我想捕获在使用 invoke 方法调用的方法中抛出的异常。

public void TestMethod()
{
try
{
method.Invoke(commandHandler, new[] { newCommand });
}
catch(Exception e)
{
ExceptionService.SendException(e);
}
}

method.Invoke 调用以下方法:

public void Register(/*parameters*/)
{
if(test_condition())
throw new CustomException("Exception Message");
}

问题是,当我在 TestMethod 中捕获 CustomException 时,catch 语句中的 e 变量不是 CustomException 类型。它有以下消息:“调用的目标已抛出异常”。

我想捕获已引发的异常(即 CustomException),并将其传递给 ExceptionService 机制。

我做错了什么?

最佳答案

是的,您正在通过反射调用该方法。所以根据the documentation , 一个 TargetInvocationException如果目标方法抛出异常,将被抛出。

只需使用 InnerException获取并可能抛出原始异常的属性。

例如:

try     
{
method.Invoke(commandHandler, new[] { newCommand });
}
catch (TargetInvocationException e)
{
ExceptionService.SendException(e.InnerException);
}

关于c# - 调用目标抛出异常(MethodBase.Invoke 方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741529/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com