This patch makes the "handler" param optional and defaults to using
a handler that is defined within the exception class itself. The
thinking is that this will encourage a good pattern in that the code
to handle a given error, and the error itself, are defined in the
same place (high cohesion).