这里介绍几种常见的异常并对原因进行分析,包括:
- ArrayIndexOutOfBoundsException异常;
- UnsupportedClassVersionError错误;
- NumberFormatException异常;
- 堆栈溢出和内存溢出。
3. ArrayIndexOutOfBoundsException异常
这是一个非常常见的异常,从名字上看是数组下标越界错误,解决方法就是查看为什么下标越界,下面就是一个错误实例:
Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException:2
at test4.State.nextStates(State.java93)
at test4.State.main(State.java:478)
从这些提示信息中可以获取如下信息:
1) 错误发生在93行
2)发生错误的时候,下标的值为2
接下来分析为什么下标值是2不可以就解决问题了。
4. UnsupportedClassVersionError
错误提示如下:
java.lang.UnsupportedClassVersionError:Bad version number in.class file
错误原因:
编译Java和运行Java所使用的Java的版本不一致。例如,编译的时候使用的Java版本是6,运行时候使用的Java版本是5。
解决方案:
修改运行环境的Java版本或者修改编译环境的Java版本,让两者保持一致。
5. NumberFormatException异常
数字转换异常,在把一个表示数字的字符串转换成数字类型的时候可能会报这个异常,原因是作为参数的字符串不是由数字组成的。
6. 堆栈溢出和内存溢出
在递归调用的时候可能会产生堆栈溢出的情况,因为在递归调用的时候需要把调用的状态保存起来,如果递归的深度达到一定程度,将产生堆栈溢出的异常。
如果虚拟机的内存比较小,而程序对内存的要求比较高,则可能产生内存溢出错误。
常见的异常类
异常 | 说明 |
---|---|
RuntimeException | Java.lang包中多数异常的基类 |
ArithmeticException | 算术错误,如除以0 |
IllegalArgumentException | 方法收到非法参数 |
SecurityException | 试图违反安全性 |
ClassNotFoundException | 不能加载请求的类 |
AWTException | AWT中的异常 |
IOException | I/O异常的根类 |
FileNotFoundException | 不能找到文件 |
EOFException | 文件结束 |