Exception Specifications
In order to completely declare a function, we must specify
the types of exceptions that may be thrown by that function
in addition to the formal argument types and return type.
By default, a function can throw any exception.
We can specify exactly what types of exceptions a function
may throw by listing them in the function prototype or in
the function header when a function is defined.
This is called an exception specification.