Catching an Exception
A catch block has access to the value of the exception,
but cannot modify the original value.
This is true even if the operand is a reference. Any
change to the operand does not affect the original value,
only the temporary copy.
The type of a throw expression is void and has no
residual value.
If we use throw within a try block without an operand, a
catch block is not executed. Instead, terminate is called.