【发布时间】:2010-08-16 01:45:05
【问题描述】:
"We do not use C++ exceptions."
如果不使用异常,出现错误时会发生什么?你就任由程序崩溃?
【问题讨论】:
-
请不要采用 Google 代码样式指南,尽管世界上一切都是美好的。对于现代 C++ 项目来说,这很糟糕。 Just ignore it.
-
有一种情况我可以想到异常不是一种选择(除了可能不支持它们的嵌入式 C++) - 当通过抽象接口在共享库中公开 C++ 类时。在这种情况下,无论是您自己的自定义 DLL(或 .so),还是 COM 接口或 XPCOM 接口,仅举几例,您都不能出现跨越接口边界的异常。因此,您必须求助于捕获所有异常并返回错误代码。否则我同意 GMan,不使用异常的麻烦是不值得的。
-
C 没有异常,它仍然可以让你处理异常情况。你可以在 C++ 中做同样的事情。
-
你会像处理其他语言一样处理错误,没有例外:大量显式代码来检查每个函数调用的结果,以及当有人出错时进行长时间的调试会话。但是,除非像 Google 一样,你有大量不安全的遗留代码,否则你会疯狂地编写这样的代码。
-
啊,这就是为什么 Windows 上的 AddressSanitizer 和 Dr Memory(由 Google 员工开发)不支持 C++ 中的异常处理:他们自己的项目根本不需要它...