Исключения в C ++ и наследование от std :: exception

Учитывая этот пример кода:

#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;
}

Я получаю следующий вывод:

Exception: unknown

Тем не менее, просто делая наследствоmy_exception_t отstd::exception publicЯ получаю следующий вывод:

Exception: Hello, world!

Может ли кто-нибудь объяснить мне, почему тип наследования имеет значение в этом случае? Бонусные баллы за ссылку в стандарте.

Ответы на вопрос(2)

Ваш ответ на вопрос