Teniendo en cuenta este código de ejemplo:C++ Excepciones y herencia de std :: excepción
#include <iostream>
#include <stdexcept>
class my_exception_t : std::exception
{
public:
explicit my_exception_t()
{ }
virtual const char* what() const throw()
{ return "Hello, world!"; }
};
int main()
{
try
{ throw my_exception_t(); }
catch (const std::exception& error)
{ std::cerr << "Exception: " << error.what() << std::endl; }
catch (...)
{ std::cerr << "Exception: unknown" << std::endl; }
return 0;
}
me sale el siguiente resultado:
Exception: unknown
Sin embargo, simplemente haciendo la herencia de my_exception_t
de std::exception
public
, consigo el siguiente resultado:
Exception: Hello, world!
Podría alguien pl easy me explica por qué el tipo de herencia importa en este caso? Puntos de bonificación para una referencia en el estándar.
Aceptado para la referencia estándar; ¡Gracias! – fbrereto