java.lang.Throwable.
Extending java.lang.Throwable directly is generally considered bad practice.
It is usually enough to extend java.lang.RuntimeException, java.lang.Exception, or - in special
cases - java.lang.Error.
Example:
class EnigmaThrowable extends Throwable {} // warning: Class 'EnigmaThrowable' directly extends 'java.lang.Throwable'