与任何链条一样:如果一个元素损坏,则整个链条都会损坏。
因此,如果您正在链接对象,一方面这可能非常容易访问,另一方面如果由于错误(例如远程连接、文件等)而导致失败,则链接变得很尴尬。
因此,除非事情没有返回预期的响应类型而是发出失败的信号,否则异常可能会有所帮助,但是 - 随着链的中断 - 的使用是有限的。
但是,我认为抛出异常是错误处理(在链中和开发自己的代码)中可以做的最好的事情。
抛出异常的好处如下:您不需要破坏使链可访问的语法。
假设您在代码中犯了错误。最好抛出异常,因为无论如何您都需要修复它。
或者假设数据层已经被编码,它经常失败。抛出一个异常,你就知道需要更多爱的部分了。
在具有链接的通用代码中,这些异常会打断你(你总是可以捕获它们,顺便说一句,你也可以将错误变成异常),但它们会指出你可能没有的错误原因想的已经够多了。
所以,
- 异常是链的一种错误处理方式
- 异常可帮助您定位各种错误来源,同时您可以维护链式语法以进行更高级别的数据访问。
然而,无论链接做得多么好,都会出现它不再有意义的地步(我应该添加“与所有内容一样”;))。我不会说我是一个真正的链接迷,但即使作为一个非迷,我也会不时在我自己的代码中使用这个原则。它可以创建易于编写的代码,因此使用异常进行错误处理,我没有遇到任何“真正的”(tm)问题。这比用虚假或类似的废话打破你的链条要好得多。
从理论上讲,您可以通过重载返回一个接受任何属性/成员调用 set/get 的对象,但即使这很有趣,我认为它只会引入更多的复杂性,而不是有助于处理实际的现实生活中的错误。
因此,如果您链接到错误中,您实际上会在使用异常时看到错误。这就是例外情况:由于错误(或信号,也可以)而中断应用程序的标准处理。