Chapter 3. General Concepts
3.3.1
Standard Exception Classes
l
Standard exception classes can be divided into three groups:
1.
Exceptions for language support
2.
Exceptions for the C++ standard library
3.
Exceptions for errors outside the scope of a program
l
std::bad_exception
class E1;
class E2;
void f() throw(E1) //throws only exceptions of type E1
{
...
throw E1(); //throws exception of type E1
...
throw E2(); //calls unexpected(), which calls terminate()
}
if class bad_exception is part of the exception specification, then unexpected() usually rethrows an exception of this type:
class E1;
class E2;
void f() throw(E1, std::bad_exception)
//throws exception of type El or
//bad_exception for any other exception type
{
...
throw E1(); //throws exception of type E1
...
throw E2(); //calls unexpected(), which throws bad_exception
}