As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center提供指导。
已关闭8年。
也许异常(exception)是最具争议的C++功能。许多团队including google不使用它们。当然,是否使用它们的决定取决于上下文-例如,在某些游戏中,可以在内存不足时崩溃,但在医疗设备控制软件中则不会崩溃。除了内存不足外,有些团队可能会使用异常来破坏网络,找不到文件等。但是其他团队可能会说这种情况太普遍了,因此不能称之为异常(其他人可能会说,但是如果很常见,那么该怎么办? ?)
通常,不使用异常的决定是基于潜在的误导性论点,即难以编写异常安全代码。有人说这种说法是错误的,因为使用错误代码的替代方法至少会导致同样困难的代码。大卫·亚伯拉罕(David Abrahams)clarifies。
在这个问题上,我很想知道:
在什么情况下使用异常(exception)? 您的应用程序的上下文是什么?为什么你不能没有异常(exception)地生活? 您如何设法编写异常安全代码?您必须进行多少投资? 是/值得吗?
已关闭8年。
也许异常(exception)是最具争议的C++功能。许多团队including google不使用它们。当然,是否使用它们的决定取决于上下文-例如,在某些游戏中,可以在内存不足时崩溃,但在医疗设备控制软件中则不会崩溃。除了内存不足外,有些团队可能会使用异常来破坏网络,找不到文件等。但是其他团队可能会说这种情况太普遍了,因此不能称之为异常(其他人可能会说,但是如果很常见,那么该怎么办? ?)
通常,不使用异常的决定是基于潜在的误导性论点,即难以编写异常安全代码。有人说这种说法是错误的,因为使用错误代码的替代方法至少会导致同样困难的代码。大卫·亚伯拉罕(David Abrahams)clarifies。
在这个问题上,我很想知道:
最佳答案
我将异常用于特殊行为,而不是太频繁地使用。当调试崩溃时,我经常使用“异常中断”,因此,如果您的代码使用异常来处理通常发生的事情,那么我将对您发火。如果出现意外情况,请使用它们。
可接受的示例:您的代码所依赖的服务器不可用,因此您的服务无法做任何有意义的事情。
该示例意味着我对您的代码感到恼火:用户输入的数字大于100,作为函数的输入,期望输入数字
实际上,如果您正在开发面向用户的应用程序,则用户可能不应该做任何会产生异常的事情。
不过,这是一个非常灰色的区域,因此,如果您同意/不同意,请随时赞成/反对我。如果您不同意,请发表评论说为什么-我很好奇听到其他准则/规则/指标。