nWhen we throw an exception, it is as if we are using the throw operator and its associated operand to
"call" a catch
block "passing" an argument. The type of the operand must be an exact match with the type specified in the associated catch block, except for
the following three
cases:
n 1) the
operand (or, actual argument) matches a constant of the same type, a reference of that type,
or a constant reference
of that type,
n 2) the
operand is an array containing elements of some type that matches a pointer to that type,
or
n 3) the
operand is a pointer that matches a pointer to void.