Loading

课后整理总结-知识点总结-异常处理情况

关于JAVA项目中的常用的异常处理情况:

我根据网上查阅的资料,进行了一些总结。

 大致可以分为17种

1.空指针异常——java.lang.nullpointerexception

当程序试图在需要对象的地方使用 null 时,抛出该异常。即为如果一个指针是空,但仍被调用就会出现这种情况。

字符串变量,数组或类对象未初始化(即这些值为空)可能会出现这种异常,因此应该检查是否初始化。

2.指定的类不存在——java.lang.ClassNotFoundException

原因可能是确实缺少指定类,也有可能是缺包,导入包即可。如果仍然报错,检查lib中是否导入了jar包。

3.字符串转换为数字异常——java.lang.NumberFormatException

字符串String中出现非数字型字符时,转换为数字类型时不满足格式或超过了类型的范围(比如string转int和string转double)发生异常。因此应该转换之前先对字符串进行检查。

4.数组下标越界异常——java.lang.IndexOutOfBoundsException

若想取的数组元素在数组中并没有定义出来,如定义了一个长度为4的数组a,当你想取a[6]元素时肯定会出错。因此应该注意数组的长度,有时候为了减少空间浪费我们会使用动态数组构建方法,这时在对数组进行操作时建议先用length获取其数组长度,从而规避错误。

5.数学运算异常——java.lang.ArithmeticException

一般是除数为0时会报出该错误,避免除数为0即可。除了除数为0的情况之外,可能还有其他的异常情况。

6.没有访问权限——java.lang.IllegalAccessException

权限问题,在程序访问某方法时注意一下访问权限为共有还是私有,这种错误在使用package时容易发生。

7.方法的参数错误——java.lang.IllegalArgumentException

在调用带有参数的方法时,请注意传递的参数是否正确。

8.数据类型转换异常——java.lang.ClassCastException

在进行强制类型转换时容易发生该错误,在进行转换前先对类型进行判别。

9.文件未找到异常——java.lang.FileNotFoundException

当程序试图打开一个不存在的文件进行读写操作时会报出该错误,通常由FileInputStream,FileOutputStream,RandomAccessFile的构造器声明发出,即使文件存在,但因某个原因无法访问,也会报出该错误。

10.数组存储异常——java.lang.ArrayStoreException

假如在int型数组里存入string类型的变量,就会报错,因此应该在存入对象时查明类型,或者在存入前先进行类型转换。

11.方法不存在异常——java.lang.NoSuchMethodException

程序所要调用的方法不存在。解决方法:不调用或者构造其方法。

12.文件已结束异常——java.lang.EOFException

程序输入过程中遇到文件或流的结尾引发该异常,此异常用于检查是否达到文件或流结尾。

13.实例化异常——java.lang.InstantiationException

类创建新对象时无法通过构造器进行实例化引发的异常。解决方案:构造方法。

14.被中止异常——java.lang.InterruptedException

通过其他线程的Thread的interrupt方法中止另一个线程时报出的错误。解决方法:一,不做处理,直接抛出;二,捕获异常,再次调用interrupt方法,将中断状态重新设置为true。

15.不支持克隆异常——java.lang.CloneNotSupportedException

如果没有实现Cloneable接口便调用了clone方法,报出该错误;若类不支持Cloneable接口,调用时也会出现该错误。解决方法:实现Cloneable接口。

16.输入输出异常——IOException

该异常为Exception的一个分支,通常发生在文件的数据读写上。

17.错误——java.lang.Error

所有错误的基类,用于标识严重的程序运行问题。通常原因是访问外部资源时出现一系列问题,解决方案也需要围绕访问外部资源这一重点展开。

JAVA异常处理的几项注意原则:

不要丢弃异常,捕获异常后需要进行相关处理。如果用户觉得不能很好地处理该异常,就让它继续传播,传到别的地方去处理,或者把一个低级的异常转换成应用级的异常,重新抛出。
catch语句应该指定具体的异常类型。不要把不该捕获的异常也捕获。
在finally里面释放资源。如果finally里面也会抛出异常,也一样需要使用try..catch处理。
不要把大量的代码塞在try...catch块里面,分离各个可能出现异常的语句并分别捕获异常。
由于异常可能导致输出的数据不完整,因此用户需要作出相应处理,至少应该提示该数据的不完整
posted @ 2022-10-17 22:48  冰稀饭Aurora  阅读(21)  评论(0编辑  收藏  举报