是否应该在某处处理所有抛出的异常?

时间:2013-09-13 00:04:53

标签: c# exception

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

2 个答案:

答案 0 :(得分:1)

添加违反基本健全性检查的例外是没有害处的。唯一一次发生这种例外的时间应该是在测试期间,如果你错误地认为某些东西是公理的,实际上并非如此。你不一定需要处理这样的例外。

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

答案 1 :(得分:1)

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