我使用反射来调用引发异常的方法。但是这个异常没有抛出,我也无法捕获它。
我通过调用调用:
GetMethod().Invoke(myInstance, new object[] { result });
Run Code Online (Sandbox Code Playgroud)
其中结果是对象类型。被调用的方法抛出异常,例如:
public async Task MyMethod(Object input)
{
// do something...
throw new Exception("Error");
}
Run Code Online (Sandbox Code Playgroud)
如果我不使用 try-catch 块,应用程序将连续,如果我使用如下块:
try
{
GetMethod().Invoke(myInstance, new object[] { result });
log("everything is ok");
}
catch(Exception e)
{
log(e.message)
}
Run Code Online (Sandbox Code Playgroud)
所以预期的输出应该是:
错误
但是
一切都好
您的方法返回 a Task
,因此实际上不会引发异常。为了获得异常,您应该首先解开任务:
var result = GetMethod().Invoke(myInstance, new object[] { result });
if (result is Task task)
{
// this line will throw.
await task;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1119 次 |
最近记录: |