Lambdas和异常处理

时间:2009-10-15 15:47:48

标签: c# exception-handling lambda

我有以下内容:

public class FooWrapper
{
    public Action Foo { get; set; }

    public void Execute()
    {
        try
        {
            Foo.Invoke();
        }
        catch (Exception exception)
        {
                //exception is null
            //do something interesting with the exception 
        }
    }
}

当我使用以下内容运行我的单元测试时:

new FooWrapper() { Foo = () => { throw new Exception("test"); } };

异常按预期抛出但是catch会逐步执行,但“exception”为null。我如何得到.Invoke()抛出的异常来正确处理它?<​​/ p>

2 个答案:

答案 0 :(得分:2)

这听起来像是catch块中代码中的错误。样本定义的catch块中的异常值不能为null。必须有一个非空的异常值才能执行该代码。

你能发布catch块的内容吗?

答案 1 :(得分:2)

如果断点在<{strong>外面<{1}}行,它只会显示为null;在里面,它应该是非null。我刚刚测试了它,并按预期得到了exception Exception