All the interfaces in Java like Serializable, Cloneable, Observable etc are suffixed with “-able”. However, java.lang.Throwable is not an interface but a class.
I understand the usage of java.lang.Throwable but I cannot understand why it is named in that fashion. Is there a specific reason for this anomaly ?
An interview lost to the dustbins of the internet with James Gosling, an ex-VP of Sun and a main architect of Java explains why the decision was made to make Throwable a class and not an interface. The main reason was because throwables needed to track state: