2009-10-15 54 views
1

我有类似如下: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"); } }; 

预期的异常被抛出,但和卡逐步通过但“异常”为空。如何获得.Invoke()抛出的异常以正确处理它?

回答

2

这听起来像你的catch块内代码中的错误。由您的示例定义的catch块中的异常值不能为空。该代码必须有一个非空的异常值才能执行。

你可以发布你的catch块的内容吗?

+0

男孩,我现在不觉得傻! 谢谢大家! – Mike 2009-10-15 15:56:35

2

它只出现null,如果你有一个断点exception行;在里面,它应该是非空的。我刚刚测试过它,并得到ExceptionMessage="test",如预期。