Similar to catch, but returns an
Either result which is (Right a) if no
exception of type e was thrown, or
(Left ex) if an exception of type e was
thrown and its value is ex.
A variant of try that takes an exception predicate to
select which exceptions are caught (c.f. catchJust).
If the exception does not match the predicate, it is
re-thrown.