Cha*_*ion 9 .net c# reflection exception-handling
我正在编写一个组件,它在顶层通过反射调用方法.为了使我的组件更容易使用,我想捕获被调用方法抛出的任何异常并解开它们.
因此,我有类似的东西:
try { method.Invoke(obj, args); }
catch (TargetInvocationException ex) {
throw ex.InnerException;
}
Run Code Online (Sandbox Code Playgroud)
但是,这会吹走内部异常堆栈跟踪.我不能在throw
这里使用(因为我正在重新抛出一个不同的异常对象).我可以在catch块中做些什么来确保原始异常类型,消息和堆栈跟踪都能通过?
Dus*_*sty 20
正如这里所回答的,从.NET 4.5开始,您可以使用ExceptionDispatchInfo
该类来解包内部异常.
try
{
someMethod.Invoke();
}
catch(TargetInvocationException ex)
{
ExceptionDispatchInfo.Capture(ex.InnerException).Throw();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2192 次 |
最近记录: |