An Exception defines the characteristics of an exceptional event
in a different way than CoreExceptions. Instead of creating an
hierarchy of objects and setting attributes of the objects, you
create an hierarchy of classes and override methods in those classes;
instances of those classes are passed to the handlers instead of
instances of the common class Signal.
Internally, Exception and every subclass of it hold onto a
CoreException, so the two mechanisms are actually interchangeable.