ApplicationException is the super class of all Exceptions created in
the application. It uses the concept of an error key to reduce the
number of exception subclasses in the application whilst still allowing
them to be uniquely identified. The error key and optional args array
are also used to construct internationalised
error messages in the ExceptionHandler
.
ApplicationException subclasses are defined for many of the application modules and they define the error keys specific to that module.