异常体系的最上层父类是Exception,分为编译时异常和运行时异常。
编译时异常:没有继承RuntimeExcpetion的异常,直接继承于Exception,编译阶段会提示错误。
运行时异常:RuntimeException本身和子类,运行时提示错误。
1.JVM默认处理异常的方式:把异常信息输出在控制台,程序停止运行
2.捕获异常,当代码出现异常,运行不会停止。
int[] arr = {1,2,3};
try{
//可能出现异常的代码
System.out.println(arr[10]);
}catch (ArrayIndexOutOfBoundsException e){
//如果出现异常该如何处理
}
后面的代码
如果try没有遇到问题,代码直接执行后面的代码。
如果try中遇到多个问题,写多个catch与之对应,如果异常存在父子关系的话,父类一定要写在下面。
int[] arr = {1,2,3};
try{
//可能出现异常的代码
System.out.println(5/0);
System.out.println(arr[10]);
}catch (ArrayIndexOutOfBoundsException e){
//如果出现异常该如何处理
System.out.println(11111);
}
System.out.println(22222);
直接报错
int[] arr = {1,2,3};
try{
//可能出现异常的代码
System.out.println(arr[10]);
System.out.println(5/0);
}catch (ArrayIndexOutOfBoundsException e){
//如果出现异常该如何处理
System.out.println(11111);
}
System.out.println(22222);
执行第一个异常后直接到catch,不会执行除0异常
如果try中的问题没有被捕获,用JVM默认处理异常机制。
如果try中遇到了问题,try后面的其他代码不会执行,下面333333不会执行。
int[] arr = {1,2,3};
try{
//可能出现异常的代码
System.out.println(arr[10]);
System.out.println(3333333);
}catch (ArrayIndexOutOfBoundsException e){
//如果出现异常该如何处理
e.printStackTrace();
}
System.out.println(22222);
**
自定义异常
**
定义异常类
写继承关系
空参构造
带参构造