Правильное использование исключений в C++

В C++ следует использовать std::runtime_error, чтобы указать на какую-то ошибку, или мне следует создать собственные исключения, которые наследуются от std::runtime_error, чтобы я мог лучше их обрабатывать.

Например, если бы я каким-то образом получил ввод от пользователя, что было бы лучше:

if (inputInvalid)
{
    throw std::runtime_error("Invalid input!");
}

По сравнению с...

class invalid_input
    : public std::runtime_error /* or should I inherit from std::exception? */
{
public:
    invalid_input()
        : std::runtime_error("Invalid input!")
    {
    };
};

-------------------------------------------------------

if (inputInvalid)
{
    throw invalid_input();
}

Что считается лучшим использованием обработки исключений/что лучше использовать?

5
задан Josh 26 April 2012 в 15:32
поделиться