【问题标题】:which is better, throw an exception or return nonzero value? [duplicate]哪个更好,抛出异常或返回非零值? [复制]
【发布时间】:2010-06-07 23:36:48
【问题描述】:

可能重复:
C++ - Arguments for Exceptions over Return Codes

在进行 C++ 编程时,您有两种选择来报告错误。我想很多老师会建议你抛出一个异常,它是从 std::exception 派生的。另一种可能更“C”风格的方法是返回一个非零值,因为零是“ERROR_SUCCESS”。

确实,返回异常可以提供更多的错误信息和恢复信息;虽然代码会有点膨胀,但至少对我来说,在你的脑海中让异常安全有点困难。其他方式,如返回其他内容,将使报告错误更容易;缺点是管理恢复可能是一个大问题。

各位,作为优秀的程序员,不考虑你老板的意见,你更喜欢哪一个?对我来说,我想返回一些非零值。

【问题讨论】:

标签: c++ exception


【解决方案1】:

来自C++ FAQ:使用异常处理错误。

在我看来,这背后的逻辑是,对于返回码,代码的调用者有责任检查返回码以处理错误。这样,您的代码的用户就有可能陷入糟糕的境地。另一方面,必须处理异常,否则它们会在调用堆栈中冒泡,直到程序终止。

在我看来,如果您正在编写 C++(并且希望遵循 C++ 习惯用法),并且想要使用错误处理,那么异常是您的最佳选择。

【讨论】:

    【解决方案2】:

    在大多数情况下,通过异常处理错误会容易得多。编写异常安全代码也很容易。我很懒。我选择了简单的路线。

    【讨论】:

    • 这实际上不会花费更多的编码工作吗?您确实检查每个返回码,不是吗?与让 try/exception 覆盖代码块相反,这将是一段错误处理代码,而不是许多。
    【解决方案3】:
    猜你喜欢
    • 2014-09-07
    • 1970-01-01
    • 2010-10-23
    • 2012-12-22
    • 2012-06-08
    • 2011-10-16
    • 2011-03-29
    • 2019-01-28
    相关资源
    最近更新 更多