异常机制
-
分3类:
- 检查型异常:用户错误或问题引起
- 运行时异常:被程序员避免的异常
- 错误ERROR:如栈溢出
-
Java中把一场当作对象处理。
Error
- 由Java虚拟机生成抛出
- 虚拟机执行错误(Virtual MachineError),即JVM不再有继续执行操作所需要的内存资源时(虚拟机线程终止),出现OutOfMemoryError
- 虚拟机试图跑应用时,如定义错误、链接错误
Exception
- 一般由逻辑错误引起(编程有异常)
- 一个重要的子类RuntimeException(运行时异常)
- ArraylndexOutOfBoundsException(数组下标越界)
- NullPointerException(空指针异常)
- ArithmeticException(算术异常)
- MissingResourceException(丢失资源)
- ClassNotFoundException(找不到类)等异常,
- 这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。
处理
- 五个关键字:
- try catch finally throw throws
- try catch finally
public class Test {
public static void main(String[] args) {
int a = 1;
int b = 2;
//try catch保证程序可以正常运行
try {//try监控
System.out.println(a/(b-2));
}catch (ArithmeticException e){//catch(想要捕获的异常类型):捕获异常
System.out.println("有问题");
e.printStackTrace();//打印错误的栈信息
}catch(){//捕获多个异常时,范围从小到大,可看下图
//可添加一些处理方法
}...
finally {//始终执行
System.out.println("再检查检查");
}
}
}
-
异常类型:
-
捕获想监控的代码:crtl+alt+t(包围)
-
throws:主动抛出异常,一般在方法上使用
-
throw:主动抛出异常,在方法中使用
public void test(int a,int b)throws ArithmeticException {
if (b == 0) {
throw new ArithmeticException();
}
}
- 可以让程序持续运行不因为异常中止
自定义异常
- 创造一个继承Exception的类