C#中的方法链接和异常

前端之家收集整理的这篇文章主要介绍了C#中的方法链接和异常前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有如下方法链:
var abc = new ABC();
        abc.method1()
           .method2()
           .methodThrowsException()
           .method3()
           ;

假设我已经将method1(),method2()和method3()定义为

public ABC method1() {
        return this;
    }

和methodThrowsException()为

public ABC method3() {
        throw new ArgumentException();
    }

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

Putting methods on separate lines also
makes debugging easier as error
messages and debugger control is
usually on a line by line basis.

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

谢谢

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

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

解决方法

如果查看堆栈跟踪(显示为异常详细信息的一部分),无论您如何格式化代码,都应该看到异常的确切位置.

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

var abc = new ABC(); 
var abc1 = abc.method1();
var abc2 = abc1.method2();
// etc...

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

猜你在找的C#相关文章