【发布时间】:2020-07-17 15:35:45
【问题描述】:
来自 .NET 世界,当错误发生在用户端(如验证)时抛出异常被认为是一种不好的做法,在不同的文章和 GitHub 示例中看到许多它的实例似乎真的很奇怪。
Dart 中是否有任何机制可以降低堆栈跟踪的成本,或者在 Dart 中为输入验证之类的东西抛出异常也是不好的做法?
【问题讨论】:
来自 .NET 世界,当错误发生在用户端(如验证)时抛出异常被认为是一种不好的做法,在不同的文章和 GitHub 示例中看到许多它的实例似乎真的很奇怪。
Dart 中是否有任何机制可以降低堆栈跟踪的成本,或者在 Dart 中为输入验证之类的东西抛出异常也是不好的做法?
【问题讨论】:
正如您所说,异常应该主要用于异常路径。验证实际上是程序域的一部分。
我做了一个非常简单的测试——返回结果与异常。 https://gist.github.com/jposert/0cbf824ac625a6563c2f62085eda64e8
该测试在统计上并不正确,但我认为它表明即使存在时间差异 - 在软件的上下文中它可能并不重要。
但是,从架构的角度来看,抛出而不是返回肯定是不正确的。
【讨论】: