我们都知道,Throwable里面存储的是Java语言中的所有错误或异常,而这些错误或异常指的是字符串,只不过把这些字符串表示为一个对象。
那么既然是对象,也就意味着它们里面没有实现任何功能的方法,如果我们查看源码,就会发现Throwable类中的子类的解决异常处理方法都是构造方法,一个是无参构造,另外一个就是带字符串参数,也就是带对象的带参构造。
既然有了构造方法,那就可以直接从父类中提取所需要的异常处理信息,从而来构造一个方法,这样可以省略子类很多代码,注意普通类继承的话是直接继承,不能够改变,如果改变的话就会影响到父类。
根据这个特点也可以很清楚的说明Throwable为什么是普通类,因为它压根就不需要子类重写方法,只需要提取信息便可。如果将Throwable定义为接口或者是抽象类的话,还要创建子类将Throwable实例化,并且要继承父类Throwable的所有方法,如果是接口,当需要使用异常处理方法的时候,还要将所需要的异常处理信息填进去,改写接口,这样只会导致代码量增多,会让异常处理更加麻烦。
所以,如果Throwable是一个接口,异常处理并不会更容易。
本文固定URL:https://www.dotcpp.com/qa/53
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程