gpt4 book ai didi

c++ - 什么时候抛出不同类型的异常有用?

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:45 25 4
gpt4 key购买 nike

在大型项目中抛出不同的异常例如 std::runtime_errorstd::invalid_argument 是否有用?还是将一般的 std::exceptionwhat() 的良好文本参数一起抛出更好?什么时候从 std::exception 派生一些子类才有意义?

入魔

最佳答案

使用抛出最具体的异常总是有意义的。由于每个异常都应该从 std::exception 派生,代码捕获可能决定它想要处理它的粒度级别(通过引用捕获!S. Meyers 的“更有效的 C++”中的第 13 项).

只使用 std::exception 和一些文本是不行的:

  • 不必限制捕获代码的使用可能性
  • 如果它必须根据异常类型执行不同的操作(这可以通过 RTTI 以较低的成本实现),则捕获代码需要将文本解析为基本逻辑
  • 我想不出这样做有什么好处。如果需要,覆盖 what() 可为任何异常提供足够的文本。

关于c++ - 什么时候抛出不同类型的异常有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6095924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com