首页  >  编程教程  >  编程问答  >  为什么Throwable类是一个类而不是接口?

为什么Throwable类是一个类而不是接口?

很多同学看到Throwable以able结尾,就以为Throwable是接口,其实Throwable是个类


此时就会有同学有这样的疑问,那为什么不将Throwable类直接设置为接口呢?


首先,以able结尾大多数时候确实用来表示接口,但说到底,这不过是一个约定,而不是语法要求,所以,并不能100%地认为以able结尾的都是接口。


其次,我们会发现Java的异常机制里面是没有接口的,它的顶层类就是Throwable类。也就是说,你要定义一个异常类,就必须继承另一个异常类,因为catch子句要求它必须捕获一个异常,而不是任意对象。


注意:Javascript就没有这个要求,因此你可以捕获任何对象作为异常。


既然自定义的异常必须要继承另一个异常类,那么它就不能再继承别的类,这样就在很大程度上限制了异常类的用途,从而更有利于开发设计良好的程序。


例如:假设Throwable是一个接口,那么任何一个类都可以实现它,然后作为异常用catch来捕获,这就有点像Javascript的情况,违反了单一职责原则。所以,现在Javascript也建议程序员尽量用专门的异常对象,而不是字符串,这样会让程序更明确。



本文固定URL:https://www.dotcpp.com/qa/52

编程杂谈
编程基础
知识答疑