我想编写一个扩展方法来运行某个对象的方法,并返回执行期间发生的异常(如果有的话)。
换句话说,使myObject.Foo()的动态为anyObject.AnyMethod(...)。
Exception incurredException = null;
try
{
myObject.Foo();
}
catch(Exception e)
{
incurredException = e;
}
return incurredException;
对此:
Exception e = IncurredException( () => myObject.Foo() );
我不知道Func,Expression,Delegate等是否合适。思考?谢谢!
答案 0 :(得分:2)
假设您不关心返回类型,则需要以下内容:
public static Exception IncurredException(Action action)
{
try
{
action();
}
catch (Exception e)
{
return e;
}
return null;
}
然后您可以根据需要调用它:
Exception e = IncurredException( () => myObject.Foo() );
或者稍微整洁,使用var
和方法组语法:
var e = IncurredException(myObject.Foo);