异常是程序运行时可能出现的错误,比如找不到文件、参数非法等等。
引入异常,即是让程序有机会对异常进行处理,增强程序的鲁棒性。
1.异常
Java中的异常是Throwable子类的实例,描述了出现在代码中的错误条件,当条件满足时,引发异常。
常见的系统定义的异常
异常名 | 说明 |
---|---|
ClassNotFoundException | 未找到欲装载使用的类 |
ArratIndexOutOfBoundExcetion | 数组越界 |
FileNotFoundException | 文件或目录未找到 |
IOException | 输入、输出错误 |
ArithmeticExption | 算术错误,比如除以零 |
NullPointerException | 引用了未初始化的对象 |
2.自定义异常的声明
// 声明为Exception或其他异常类的子类
public class SizeException extends Exception {
String s;
public SizeException() {
s = "边长非法,请重新输入";
}
// 重写toString
public String toString() {
return s;
}
}
3.异常抛出
public class Triangle {
int a;
int b;
int c;
// 注意要在方法名声明抛出的异常
public Tri(int a, int b, int c) throws SizeException {
this.a = a;
this.b = b;
this.c = c;
// 三边无法构造三角形时抛出异常
if (a + b < c || a + c < b || b + c < a) {
throw new SizeException();
}
}
// 其他方法
// ……
}
4.异常处理
public static void main(String[] args) {
try {
Triangle triangle = new Trianlge(3,4,9);
}
catch (Exception e) {
System.out.println(e.toString());
}
// 如果不对异常做出处理,后面的语句不会执行
// ……
}
输出
边长非法,请重新输入
下面是更加一般的异常捕获与处理,这里处理多异常时,应该注意catch块的排列顺序:一般情况下,较具体和常见的异常应该放在更前面。
try {
// 可能引发异常的代码
}
catch (异常类名1 参数名1) {
// 异常处理
}
catch (异常类名2 参数名2) {
// 异常处理
}
finally {
// 有无异常都执行此处代码
}