C#中的方法链接和异常

dev*_*ium 6 c# exception method-chaining

如果我有如下方法链:

        var abc = new ABC();
        abc.method1()
           .method2()
           .methodThrowsException()
           .method3()
           ;
Run Code Online (Sandbox Code Playgroud)

假设我已定义method1(),method2()并且method3()

    public ABC method1() {
        return this;
    }
Run Code Online (Sandbox Code Playgroud)

methodThrowsException()作为

    public ABC method3() {
        throw new ArgumentException();
    }
Run Code Online (Sandbox Code Playgroud)

在运行代码时,是否可以知道哪个特定的代码行抛出了异常,或者它只是将所有方法链接视为一行?我做了一个简单的测试,看起来它只是将它们视为一条线,但Method Chaining

将方法放在单独的行上也使调试更容易,因为错误消息和调试器控制通常是逐行的.

我错过了什么,或者这不适用于C#?

谢谢

编辑: 这是我目前得到的:

alt text http://img163.imageshack.us/img163/4503/83077881.png

Tom*_*cek 6

如果你看一下堆栈跟踪,这是显示为异常的详细信息的一部分,你应该看到异常的确切位置,你不管怎么设置代码的格式.

我想如果调试器允许你在特定的行上放置一个断点,那么以不同方式格式化代码会很有用,但在C#中,断点放在单独的表达式上,所以这不会有帮助.您可能需要重写这样的代码以允许放置断点:

var abc = new ABC(); 
var abc1 = abc.method1();
var abc2 = abc1.method2();
// etc...
Run Code Online (Sandbox Code Playgroud)

这同样适用于突出显示当前表达式(在屏幕截图中).但是,有关异常的确切信息始终在堆栈跟踪中可用.