与异常相比,结果对象是处理失败的更干净的方法吗?

时间:2019-07-16 15:40:34

标签: c# exception design-patterns architecture design-guidelines

  

我将此问题移至softwareengineering.stackexchange.com,因为它更适合那里。

我正在看弗拉基米尔·霍里科夫(Vladimir Khorikov)的以下视频,该视频建议“远离异常进行重构” pluralsight.com - Applying Functional Principles in C# - Refactoring Away from Exceptions,而使用Result对象。您还可以在这里找到有关它的博客:enterprisecraftsmanship.com - Functional C#: Handling failures, input errors

总结起来,建议是最好返回一个结果对象,然后抛出一个异常。异常应仅用于表示错误。 此方法的参数如下:

  • 抛出异常的方法不是“诚实的”。通过查看方法的签名,您无法识别该方法是否会失败。
  • 异常处理增加了很多样板代码。
  • 使用异常控制流程时,它具有“ goto”语义,您可以在其中跳转到特定的代码行。

另一方面,返回值可以忽略(至少在C#中),而异常不能忽略。

朝这个方向重构现有企业应用程序是个好主意吗?还是不那么激进的方法是更好的方法?(我相信一定要避免使用ValidateUserInput(string input)这样的方法的返回类型来避免Vexing exceptions

0 个答案:

没有答案