Catching an Exception
The operand of the throw operator determines which
catch block is selected by matching its type with the type
of the catch blocks.
If we use the type void* for a catch block, it should come
after any other catch block specifying a pointer type.
This is because the catch blocks are checked in sequence
and the first catch block matching the type is used.
Since void* matches all possible pointer types, we would
never be able to access a catch block with a specific
pointer type if a void* catch block preceded it.