我使用反射来调用引发异常的方法。
但是不会抛出该异常,我可以直接接受它。
我通过致电
GetMethod().Invoke(myInstance, new object[] { result });
结果为对象类型。 所调用的方法将引发如下异常:
public async Task MyMethod(Object input)
{
// do something...
throw new Exception("Error");
}
如果我不使用try-catch块,则应用程序将连续运行,并且如果我使用类似的代码:
try
{
GetMethod().Invoke(myInstance, new object[] { result });
log("everything is ok");
}
catch(Exception e)
{
log(e.message)
}
因此,预期输出应为:
错误
但是
一切都很好
答案 0 :(得分:4)
您的方法返回一个json.dumps
,因此实际上不会引发异常。为了获得异常,您应该首先解开任务:
Task
答案 1 :(得分:3)
MyMethod
不会引发异常。它返回Task
,该状态最终将处于故障状态。您可以访问该任务的成员(完成后),以查看它导致了异常,但是调用MyMethod
不会永远都不会引发异常,因为它是async
方法。它只会 返回处于一种或另一种状态的Task
。