Java项目中常见的异常处理
最近建民老师给我讲了有关异常处理的知识,今天对java项目中常见的异常处理进行总结。
一、空指针异常——NullPointerException
所谓的空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常
举例说明
String mm = null; 会抛出NullPointerException异常的有() if( (mm!=null) & (mm.length()>0) ) if( (mm!=null) & & (mm.length()>0) ) if( (mm==null) | (mm.length()>0) ) if( (mm==null) || (mm.length()==0) )
上面的代码说明:mm已经是个null,没有开辟空间,如果调用mm.length()必然会报错
-
调用 null 对象的实例方法。
-
访问或修改 null 对象的字段。
-
将 null 作为一个数组,获得其长度。
-
将 null 作为一个数组,访问或修改其时间片。
-
将 null 作为 Throwable 值抛出。
import javax.swing.*; class AboutException { public static void main(String[] a) { int i=1, j=0, k; k=i/j; try { k = i/j; // Causes division-by-zero exception //throw new Exception("Hello.Exception!"); } catch ( ArithmeticException e) { System.out.println("被0除. "+ e.getMessage()); } catch (Exception e) { if (e instanceof ArithmeticException) System.out.println("被0除"); else { System.out.println(e.getMessage()); } } finally { JOptionPane.showConfirmDialog(null,"OK"); } } }
对于该类语句的解决方法只能是具体问题具体分析。
六、没有访问权限——java.lang.IllegalAccessException
这个异常的解释是 “没有访问权限 ”,当应用程序要调用一个类,但当前的方法即没有对该类的访问权限便会出现这个异常。
对程序中用了Package的情况下要注意这个异常。
七、方法的参数错误——java.lang.IllegalArgumentException
该类异常一般是调用参数时发生了错误,如果出现此类错误可以去找一下参数传递是否发生错误
例如g.setColor(int red,int green,int blue)这个方法中的三个值,如果有超过255的会出现这个异常,如果程
序中存在这个异常,就要去检查一下方法调用中的参数传递或参数值是不是有错
八、数据类型转换异常——java.lang.ClassCastException
当试图将对某个对象强制执行向下转换,但该对象又不可转换或又不可转换为其子类的实例时将出现该异常,在进行转换前先对类型进行判别,规避错误。
九、文件未找到异常——java.lang.FileNotFoundException
当程序试图打开一个不存在的文件进行读写操作时会报出该错误,通常由FileInputStream,FileOutputStream,RandomAccessFile的构造器声明发出,即使文件存在,但因某个原因无法访问,也会报出该错误。
该类异常主要指找不到文件。
十、数组存储异常——java.lang.ArrayStoreException
该类异常为定义数组类型与数组存入的数据类型不匹配,比如在int 数组里面存入String类型的数据就会出现此类异常,解决这种异常的方法就是在使用数组存储数据之前先查看数组的类型。
十一、方法不存在异常——java.lang.NoSuchMethodException
此类异常为调用方法时发现方法不存在,当出现这种异常时,可以之间构建一个方法就行。
十二、实例化异常——java.lang.InstantiationException
当试图通过Class的add()方法创建某个类的实例,但程序无法通过该构造器来创建该对象时引发。
Class对象表示一个抽象类,接口,数组类,基本类型 。该Class表示的类没有对应的构造器。
十三、文件已结束异常——java.lang.EOFException
程序输入过程中遇到文件或流的结尾引发该异常,此异常用于检查是否达到文件或流结尾。
十四、被终止异常——java.lang.InterruptedException
当某个线程处于长时间的等待、休眠或其他暂停状态,而此时其他的线程通过Thread的interrupt方法终止该线程时抛出该异常。
解决方法:
- 不做处理,直接抛出;
- 捕获异常,再次调用interrupt方法,将中断状态重新设置为true。
十五、不支持克隆异常——java.lang.CloneNotSupportedException
如果没有实现Cloneable接口便调用了clone方法,报出该错误;若类不支持Cloneable接口,调用时也会出现该错误。
解决方法:实现Cloneable接口。
十六、输入输出异常——IOException
该异常为输入输出流时出现的问题
十七、错误——java.lang.Error
错误,是所有错误的基类,用于标识严重的程序运行问题,这些问题统常描述一些不应该被应用程序捕获的反常情况
原因:对系统所访问外部资源,未执行关闭操作,导致外部资源的大量浪费,最终导致系统无法正常运行;对系统所访问的外部资源关闭的次数太多,外部系统无法正常处理;系统访问的外部资源出现异常情况。
解决方法:访问外部资源之前,首先检查该资源是否可以进行正常的连接或操作;访问外部资源时,如果进行了连接,一定要关闭操作,并且仅进行一次关闭操作;尽量在同一操作中共享外部资源,以减少该操作对资源的浪费,提高程序的执行效率

浙公网安备 33010602011771号