9.1.1 什么是异常
异常指的是程序运行时出现的非正常情况或错误。
异常原因:数组下标越界、算术运算被0除、空指针访问等
从命令行输入2整数,求它们的和。public class testException {public static void main(String args[]) {int x=Integer.parseInt(args[0]);int y=Integer.parseInt(args[1]);System.out.println(x+"+"+y+"="+(x+y));}}(1)正常运行示例:java testException 23 45输出结果:23+45=68(2)错误运行现象1,忘记输入命令行参数例如:java testException则在控制台将显示数组访问越界的错误信息:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0at testException.main(testException.java:3)(3)错误运行现象2,输入的命令行参数不是整数例如:java testException 3 3.4则在控制台将显示数字格式错误的异常信息:Exception in thread "main" java.lang.NumberFormatException: For input string: "3.4" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:435)at java.lang.Integer.parseInt(Integer.java:476)solution:处理方法1:用传统的防错处理办法检测输入参数是否达到2个,未达到给出提示。public class testException {public static void main(String args[]) {if (args.length<2) {System.out.println("usage: java testException int int ");} else {int x=Integer.parseInt(args[0]);int y=Integer.parseInt(args[1]);System.out.println(x+"+"+y+"="+(x+y));}}}处理方法2:利用异常机制。public class testException {public static void main(String args[]) {try {try块中的代码如果出现异常,则流程将发生变化。int x=Integer.parseInt(args[0]);int y=Integer.parseInt(args[1]);System.out.println(x+"+"+y+"="+(x+y));} catch ( ArrayIndexOutOfBoundsException e) {System.out.println("usage: java testException int int ");}} try块执行中出现异常,由catch块捕获处理}
9.1.3 系统定义的异常
| 常见系统定义的异常 | 异常的解释 |
|---|---|
| ClassNotFoundException | 未找到要装载的类 |
| ArrayIndexOutOfBoundsException | 数组访问越界 |
| FileNotFoundException | 文件找不到 |
| IOException | 输入、输出错误 |
| NullPointerException | 空指针访问 |
| ArithmeticException | 算术运算错误,如除数为0 |
| NumberFormatException | 数字格式错误 |
| InterruptedException | 中断异常,线程在进行暂停处理时(如:睡眠) 被调度打断将引发该异常。 |
