一、处理错误
---》异常分类
Error类:描述了Java运行时系统的内部错误和资源耗尽错误(程序不应该抛出)(未检查异常)
Exception类:
分为两类:一个是RuntimeException类,另一个是表示其他错误
其中-------1》RuntimeException:包括错误的类型转换,数组访问越界,空指针(属于编程人员的问题)(未检查异常)
-------------2》非RuntimeException类:打开不存在的文件,根据字符查找的类不存在,在文件尾部读取数据(已检查异常)
声明已检异常:public FileInputStream(String s) throws FileNotFoundException
在下列情况下需要抛出异常:---》调用一个抛出一检查异常的方法 如FileInputStream构造器
---》程序运行中发现错误,并且在内部已经利用throw抛出已检查异常
---》程序出现错误
---》java虚拟机和运行库出现内部错误
-------------3》如何抛出异常:----》找到合适的类---》创建这个类的对象----》将对象抛出
二、捕获异常
-----1》try{}catch{e}
抛出和捕获的区别:应该将那些知道如何处理的异常捕获,而将那些不知道如何处理的异常抛出(或者说传递给一个异常类处理)
-----2》finally子句:
不管是否捕获,finally子句都将被执行
警告:finally子句包含return语句时,将出现另一个结果:假设利用return语句在try语句块中退出,在方法返回之前,finally子句的内容将被执行。如果finally子句也有一个return语句,这个返回值将覆盖原始的返回值!
-----3》带资源的try语句
try(Resource res=){
}
这个快不管是正常退出还是存在一个异常都会调用in.close()方法,就好像使用了finally块一样。
三、使用异常机制的技巧
-----1》异常处理不能带一简单的测试
-----2》不要过分的细化异常:会加大代码量
-----3》利用异常层次结构:寻找更适合的子类或创建自己的异常类
-----4》对于基本上不会发生的异常不要抛出,降低效率(100年一次)
-----5》检查错误是,尽量严格!
-----6》对于有些异常,传递比捕获显得更好
四、断言(待补充)