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
如果你看一下堆栈跟踪,这是显示为异常的详细信息的一部分,你应该看到异常的确切位置,你不管怎么设置代码的格式.
我想如果调试器允许你在特定的行上放置一个断点,那么以不同方式格式化代码会很有用,但在C#中,断点放在单独的表达式上,所以这不会有帮助.您可能需要重写这样的代码以允许放置断点:
var abc = new ABC();
var abc1 = abc.method1();
var abc2 = abc1.method2();
// etc...
Run Code Online (Sandbox Code Playgroud)
这同样适用于突出显示当前表达式(在屏幕截图中).但是,有关异常的确切信息始终在堆栈跟踪中可用.