1、在Java项目中经常遇到的异常情况
算术异常类:ArithmeticExecption
空指针异常类:NullPointerException
类型强制转换异常:ClassCastException
数组负下标异常:NegativeArrayException
数组下标越界异常:ArrayIndexOutOfBoundsException
违背安全原则异常:SecturityException
文件未找到异常:FileNotFoundException
文件已结束异常:EOFException
字符串转换为数字异常:NumberFormatException
操作数据库异常:SQLException
输入输出异常:IOException
2、处理异常的原则
1)不要丢弃异常,捕获异常后需要进行相关处理。如果用户觉得不能很好地处理该异常,就让它继续传播,传到别的地方去处理,或者把一个低级的异常转换成应用级的异常,重新抛出。
(2)catch语句应该指定具体的异常类型。不要把不该捕获的异常也捕获了。
(3)在finally里面释放资源。如果finally里面也会抛出异常,也一样需要使用try..catch处理。
(4)不要把大量的代码塞在try...catch块里面,分离各个可能出现异常的语句并分别捕获异常。
(5)由于异常可能导致输出的数据不完整,因此用户需要作出相应处理,至少应该提示该数据的不完整
3、几种异常的原因及解决方法
a、算术异常类:ArithmeticExecption
解决方法:查看程序中涉及到算术问题的代码,看是不是没有考虑到除0的情况。
b、空指针异常类:NullPointerException
解决方法:这个异常一般是方法内部成员没有赋值造成的。使用debug模式查看,会发现该成员的值显示的是Null.对null成员做任何操作都会报这个异常错误。所以在做之前需要做非空判断。
c、类型强制转换异常:ClassCastException
解决方法:一个类是数字类,而由于误操作,错误的将数字类向数字类转换改写成了数字类向字符串类的转换,从而产生了异常。大部分原因是因为强制转换或者是
sql映射时发生了这个异常。假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。该异常经常被称为强制类型转换异常。
d、数组负下标异常:NegativeArrayException
数组大小为负值异常。当使用负数大小值创建数组时抛出该异常。
e、数组下标越界异常:ArrayIndexOutOfBoundsException
解决方法:数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。仔细阅读源程序有关于涉及到数组的定义和使用,有没有出现数组的下标小于数组大小或者数组下标大于等于数组大小。
f、违背安全原则异常:SecturityException
安全异常。由安全管理器抛出,用于指示违反安全情况的异常。
g、文件未找到异常:FileNotFoundException
解决方法:可能是父路径缺乏,或者文件没有创建。可以加一个判断。.文件没创建
String localPath =path+name;
File file =new File(localPath);
try {
//假如文件不存在,需创建
if(!file.exists()){
file.createNewFile();
}
特别注意的是文件创建的是.TXT文本,要在文件名或者文件目录填写的时候,将文件名后缀加上,将.TXT加上
h、文件已结束异常:EOFException
EOFException表示输入过程中意外地到达文件尾或流尾的信号,导致异常。
i、字符串转换为数字异常:NumberFormatException
解决方法: 主要原因是将用户提交的内容转换为整数或者浮点数时用户输入了其它非法字符。在需要进行转换的地方使用try/catch块捕获此异常然后提示用户输入合法数据。也可以看下边的错误堆栈,找出自己写的类在哪一行出现错误,然后定位的找到错误的行,在什么时候执行哪一条语句出现的错误,就可以相应的用try/catch捕获解决解决。