📜  C ++ |异常处理问题4

📅  最后修改于: 2021-06-29 11:23:15             🧑  作者: Mango

以下程序的输出

#include
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++中,编译器可能会对此发出警告,但会编译代码。这个问题的测验

想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。