If we do not succeed, then we run the risk of failure.
J. Danforth Quayle (1990)
An exception is thrown for one of three reasons:
These exceptions are not thrown at an arbitrary point in the program, but rather at a point where they are specified as a possible result of an expression evaluation or statement execution.
throw statement (§14.16) was executed in Java code.
stop of class Thread (§20.20.16) was invoked
Exceptions are represented by instances of the class Throwable and instances of its subclasses. These classes are, collectively, the exception classes.