C++;异常(使用提示) 我对C++异常有两个疑问/思考/疑惑:
在我看来,当我们考虑在代码中使用异常时,我们必须做出明确的决定——始终使用异常或根本不使用它们。这澄清了应用程序将如何处理错误,代码将更易于阅读。我也总是假设,有些东西可能抛出异常,我几乎在所有地方都放置了try/catch块。我的“规则”合理吗C++;异常(使用提示) 我对C++异常有两个疑问/思考/疑惑:,c++,exception-handling,C++,Exception Handling,在我看来,当我们考虑在代码中使用异常时,我们必须做出明确的决定——始终使用异常或根本不使用它们。这澄清了应用程序将如何处理错误,代码将更易于阅读。我也总是假设,有些东西可能抛出异常,我几乎在所有地方都放置了try/catch块。我的“规则”合理吗 STL类和算法引发的所有异常是否都源自std::exception?我的异常类总是派生自标准类(runtime\u error,logic\u error等)。我想知道是否可以安全地将catch(…)替换为catch(const std::except
std::exception
?我的异常类总是派生自标准类(runtime\u error
,logic\u error
等)。我想知道是否可以安全地将catch(…)
替换为catch(const std::exception&object)
,因为第二个总是提供有关异常原因的一些信息对于第一部分,这是一个值得阅读的关于C++中的异常,在你应该扔掉它们的时候,当你应该抓住它们时,为什么它们是有用的,还有很多其他有用的东西。 至于第二部分,据我所知,如果您从stl捕获异常,您应该可以安全地使用(const std::exception&object)
对于第二个问题,是的,标准库中抛出的所有异常都源自
std::exception
你的第一个问题很难给出具体的答案。在任何非平凡的程序中,很难完全避免异常。我觉得赫伯·萨特挺不错的 这些try/catch块的用途是什么?如果无法处理异常,当然不应该捕获它。听起来你无缘无故地抓住了他们 另外,请查看此视频:
是的,所有异常类都应该从std::exception继承。通常,为了完整起见,您应该在main的底部有一个catch(…)。最好假设所有内容都会抛出异常。但只有当您需要清理或“处理”异常时,才能捕获。不要捕获随机异常。那些try/catch块的用途是什么?如果无法处理异常,当然不应该捕获它。听起来你无缘无故地抓住了他们。也。是的,所有异常类都应该继承自
std::exception
。为了完整起见,通常应该在main的底部有一个catch(…)
。但无论如何,这不是建设性的,因为它没有一个明确的答案。@GManNickG想把它作为一个答案发布,这样我就可以投票了吗?@JohnKugelman:如果说这个问题不应该在网站上回答,然后再回答,可能有点奇怪。:)一个评论对我来说已经足够好了,谢谢!我有点同意你的第一点。因为例外是昂贵的。当返回值更合适时,不要抛出异常。您可以编写一个宏来包装返回值检查,使其简洁易读。