加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#中的方法链接和异常

发布时间:2020-12-15 08:33:30 所属栏目:百科 来源:网络整理
导读:如果我有如下方法链: var abc = new ABC(); abc.method1() .method2() .methodThrowsException() .method3() ; 假设我已经将method1(),method2()和method3()定义为 public ABC method1() { return this; } 和methodThrowsException()为 public ABC method3(
如果我有如下方法链:
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...

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读