gpt4 book ai didi

c++ - 为什么异常捕获是基于顺序的而不是基于最接近的继承?

转载 作者:行者123 更新时间:2023-11-30 05:46:00 26 4
gpt4 key购买 nike

在 More Effective C++ 的第 12 条中,Meyers 解释说,虽然虚拟调用是根据动态类型解析的,但使用最适合算法,异常捕获是基于 catch 子句的顺序。

class A {};
class B : public A {};

void main()
{
try {throw B();}
catch(A &a) {}
catch{B &b} {} // never entered
}

20 年后,这是现在的标准行为吗?这种与虚函数的区别背后的逻辑是什么?

最佳答案

是的,这是标准行为。它也是许多流行编程语言(如 Java 或 C#)的标准。

这使捕获异常的代码能够完全控制异常处理。

考虑具有多重继承的异常层次结构。

关于c++ - 为什么异常捕获是基于顺序的而不是基于最接近的继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29120802/

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