Java学习笔记-异常

时间:2023-02-25 21:01:55

一、处理错误

---》异常分类

Java学习笔记-异常

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》对于有些异常,传递比捕获显得更好


四、断言(待补充)