In the above example, we have two versions of an application,
one with "exception handling", and one without. This choice is
only allowed when the exceptions are a subclass of
RunTimeException
. Other exceptions must be
caught, otherwise the compiler will complain. For instance, an
IOException
is not a runtime exception. So, for every
time you open a file, you must program what will happen if the
operation is unsuccessful, e.g. if the file is not there or not
readable. In other words, the purpose of the Exception-mechanism is to
enforce correct and complete programming. However, runtime
exceptions allow for some sloppiness. This will keep programming less
cumbersome, but the responsability for the programmer is larger.
The rule of the thumb for handling exceptions and errors is: