why is java.lang.Throwable a class?
In java adjectives ending in -able are interfaces Serializable , Comparable etc... So why is Throwable a class? Wouldn't exception handling be easier if Throwable were an interface? (Edit: e.g. Exception classes don't need to extend Exception/RuntimeException.) Obviously, changing it now is out the question. But could it be made abstract? Wouldn't that avoid the bad practice of throw new Throwable() ; So why is Throwable a class? I can think of two reasons: Exceptions have state. In particular, message, cause, and stack trace. It is easier for the JVM to implement efficient catch blocks. Class