What exception classes are in the standard C++ library

C++ExceptionC++11Stl

C++ Problem Overview


What are the exception classes that are included in the standard C++ library, and what should they be used for? I know there are a few new C++11 exceptions, but I'm not sure what they are or where they are.

C++ Solutions


Solution 1 - C++

std::exception <exception> interface (debatable if you should catch this)
    std::bad_alloc <new> failure to allocate storage
        std::bad_array_new_length <new> invalid array length
    std::bad_cast <typeinfo> execution of an invalid dynamic-cast
    std::bad_exception <exception> signifies an incorrect exception was thrown
    std::bad_function_call <functional> thrown by "null" std::function
    std::bad_typeid <typeinfo> using typeinfo on a null pointer
    std::bad_weak_ptr <memory> constructing a shared_ptr from a bad weak_ptr
    std::logic_error <stdexcept> errors detectable before the program executes
        std::domain_error <stdexcept> parameter outside the valid range
        std::future_error <future> violated a std::promise/std::future condition
        std::invalid_argument <stdexcept> invalid argument
        std::length_error <stdexcept> length exceeds its maximum allowable size
        std::out_of_range <stdexcept> argument value not in its expected range
    std::runtime_error <stdexcept> errors detectable when the program executes
        std::overflow_error <stdexcept> arithmetic overflow error.
        std::underflow_error <stdexcept> arithmetic underflow error.
        std::range_error <stdexcept> range errors in internal computations
        std::regex_error <regex> errors from the regular expression library.
        std::system_error <system_error> from operating system or other C API
            std::ios_base::failure <ios> Input or output error

Source: http://en.cppreference.com/w/cpp/error/exception
In practice, most exceptions are custom exceptions derived from logic_error and runtime_error. Not that these are neglected, but that many exceptions are domain specific.

Keep in mind that an exception should reflect what went wrong and not who threw it. (No "MyProgramException"s)

Solution 2 - C++

See this site

enter image description here

Exception	            Description
===================================
std::exception	        An exception and parent class of all the standard C++ exceptions.
std::bad_alloc	        This can be thrown by new.
std::bad_cast	        This can be thrown by dynamic_cast.
std::bad_exception	    This is useful device to handle unexpected exceptions in a C++ program
std::bad_typeid	        This can be thrown by typeid.
std::logic_error	    An exception that theoretically can be detected by reading the code.
std::domain_error	    This is an exception thrown when a mathematically invalid domain is used
std::invalid_argument	This is thrown due to invalid arguments.
std::length_error	    This is thrown when a too big std::string is created
std::out_of_range	    This can be thrown by the at method from for example a std::vector and std::bitset<>::operator[]().
std::runtime_error	    An exception that theoretically can not be detected by reading the code.
std::overflow_error	    This is thrown if a mathematical overflow occurs.
std::range_error	    This is occured when you try to store a value which is out of range.
std::underflow_error	This is thrown if a mathematical underflow occurs.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMooing DuckView Question on Stackoverflow
Solution 1 - C++Mooing DuckView Answer on Stackoverflow
Solution 2 - C++TemplateRexView Answer on Stackoverflow