6.4内部类
https://blog.csdn.net/liu771626413/article/details/80577684
第七章 异常、断言和日志
7.1 处理错误
如果由于出现错误而使得某些操作没有完成,程序应该:
1)返回到一种安全状态,并能够让用户执行一些其他的命令
2)允许用户保存所有操作的结果,并以妥善的方式终止程序
1.用户输入错误
2.设备错误
3.物理限制
4.代码错误
1.异常分类
在Java程序设计语言中,异常对象都是派生于Throwable类的一个实例
所有的异常都是由Throwable继承而来,但在下一层立即分解为两个分支:Error和Exception
Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误,如果出现了这种错误,除了通告给用户,并尽力使程序安全的终止之外,再也无能为力了,这种情况很少出现
在设计Java程序时,需要关注Exception层次结构,这个层次结构又分解为两个分支:一个分支派生于RuntimeException;另一个分支包含其他异常
由程序错误导致的异常属于RuntimeException,而程序本身没有问题,但由于像I/O错误这类问题导致的异常属于其他异常
派生于RuntimeException的异常包含下面几种情况:
1)错误的类型转换
2)数组访问越界
3)访问null指针
不是派生于RuntimeException的异常包括:
1)试图在文件尾部后面读取数据
2)试图打开一个不存在的文件
3)视图根据给定的字符串查找Class对象,而这个字符串表示的类并不存在
“如果出现RuntimeException异常,那么就一定是你的问题”
Java规范将派生于Error类或RuntimeException类的所有异常称为非受查异常,所有其他的异常称为受查异常
2.声明受查异常
一个方法不仅需要告诉编译器将要返回什么值,还要告诉编译器有可能发生什么错误,方法应该在其首部声明所有可能抛出的异常,例如:
public FileInputStream(String name) throws FileNotFoundException
如果发生了这种糟糕情况,构造器将不会初始化一个新的FileInputStream对象,而是抛出一个FileNotFoundException类对象,系统就会开始搜索异常处理器,以便知道如何处理这个对象