C++ | Manejo de excepciones | Pregunta 4

Salida del siguiente programa

#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) Excepción derivada capturada
(B) Excepción base capturada
(C) Error del compilador

Respuesta: (B)
Explicación: si las clases base y derivada se capturan como excepciones, el bloque catch de la clase derivada debe aparecer antes que la clase base. Si ponemos la clase base primero, nunca se alcanzará el bloque catch de la clase derivada.

En Java, el propio compilador no permite capturar una excepción de clase base antes de derivarla. En C++, el compilador puede dar una advertencia al respecto, pero compila el código.

Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *