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: 0
at 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(NumberFormat
Exception.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 | 中断异常,线程在进行暂停处理时(如:睡眠) 被调度打断将引发该异常。 |