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'