C++异常处理问题4

以下程序的输出

null

#include<iostream>
using namespace std;
class Base {};
class Derived: public Base {};
int main()
{
Derived d;
try {
throw d;
}
catch (Base b) {
cout<< "Caught Base Exception" ;
}
catch (Derived d) {
cout<< "Caught Derived Exception" ;
}
return 0;
}


(A) 捕获派生异常 (B) 捕获基本异常 (C) 编译错误 答复: (B) 说明: 如果基类和派生类都被捕获为异常,那么派生类的catch块必须出现在基类之前。如果我们把基类放在第一位,那么派生类catch块将永远无法到达。

在Java中,编译器本身不允许在派生之前捕获基类异常。在C++中,编译器可能会发出警告,但编译代码。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享