3

抛出异常而不处理它是不好的做法吗?例如,如果我有一个在 Double.IsNaN() 上不应该返回 true 的数字返回 true,那么我可以通过抛出异常来使程序崩溃吗?如果在事件发生时没有优雅的方式继续操作,那么“处理”异常的意义何在?

4

2 回答 2

1

我不喜欢不处理异常,即使您所做的只是通知用户事情已经发生了变化然后调用 exit。无论如何,这几乎就是不处理异常会做的事情,除非您可以尝试提供比默认未处理异常更好的错误诊断。它还使您有机会记录异常,以便用户可以通过附加日志文件来发送错误消息。除了崩溃之外,对于“状态如此腐败,我不知道哪一端已经结束”问题,这是一个可以接受的解决方案。

于 2013-09-13T03:23:49.650 回答
1

添加违反基本健全性检查的异常并没有什么害处。如果您错误地认为某些事情是公理化的,而实际上并非如此,那么这种异常应该发生的唯一一次应该是在测试期间。您不一定需要处理这样的异常。

如果您所说的是正常程序运行期间可能发生的损坏状态,但您无法在应用程序的当前层处理,那么您似乎需要另一个可以从错误中恢复的层,与用户(或与您的代码的任何接口)并采取适当的措施。“适当的行动”可以是任何东西,从记录错误和终止到向用户询问进一步的指示。不处理这种异常不是一个好主意。

于 2013-09-13T01:31:44.810 回答