int num1 = sc.nextInt();
System.out.println(“请输入一个除数”);
int num2 = sc.nextInt();
int result = num1 / num2;
System.out.println(result);
}catch(ArithmeticException e) {
System.out.println(“除数不能为0”);
}catch(InputMismatchException e) {
System.out.println(“请输入正确的整数”);
}catch(Exception e) {
System.out.println(“出现未知错误”);
}
System.out.println(“程序结束”);
}
}
- 多重catch中如果有多个异常,并且存在异常父子关系的话,异常父类一定是在末尾,不能放在类的前面,遵循从子(小)到父(大)的顺序,父类异常在最后
5.1.3 try…catch…finally
try{
可能出现异常的代码;
}catch(异常类名 变量名){
异常处理相关代码
}finally{
无论是否出现异常,都需要执行的代码结构,常用于释放资源
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
try{
System.out.println(“输入一个被除数:”);
int i1 = sc.nextInt();
System.out.println(“输入一个除数:”);
int i2 = sc.nextInt();
int result = i1 / i2;
System.out.println(“结果为:” + result);
}catch(ArithmeticException e){
System.out.println(“除数不能为0”);
}
catch(InputMismatchException e){
System.out.println(“输入错误”);
}catch(Exception e){
System.out.println(“出现未知异常”);
}finally{
System.out.println(“End”);
}
}
5.1.4 JDK1.7之后
JDK7以后出现一种格式针对多个异常的处理
try{
可能出现问题的代码
}catch(异常类名1 | 异常类名2 | … 变量名){
处理异常
}
public static void main(String[] args) {
int a = 10 ;
int b = 0 ;
int arr[] = {11,22,33} ;
try {
System.out.println(arr[3]);
System.out.println(a/b);
}catch(ArithmeticException | ArrayIndexOutOfBoundsException e) {
System.out.println(“除数不能为0”);
System.out.println(“数组角标越界了”);
}
}
- 注:只能针对异常类