这个例子为异常程序,看控制台的打印信息,为JVM默认处理。
Exception in thread "main" java.lang.ArithmeticException: / by zero
at com.crg_01.ExceptionDemo.main(ExceptionDemo.java:10)
自己try{}catch(){}处理
分析:会执行try{}的第一句:System.out.println(arr[3]); 但是没有匹配的异常处理,就相当于没有处理异常,打印异常信息,结束程序执行。(JVM)默认处理。
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at com.crg_01.ExceptionDemo.main(ExceptionDemo.java:13)
在看个例子:
package com.crg_01;
public class ExceptionDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 8;
// int b = 2 ;
int b = 0;
int[] arr = { 1, 2, 3 };
try {
System.out.println(arr[3]);
System.out.println(a / b);
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界");
}
System.out.println("over");
}
}
复制代码
打印信息:
数组越界
over 这几个例子对比着看,一目了然。
6.如果不知道异常是谁,用Exception处理,Exception是所有异常的父类。
package com.crg_01;
public class ExceptionDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 8;
// int b = 2 ;
int b = 0;
int[] arr = { 1, 2, 3 };
try {
System.out.println(arr[3]);
System.out.println(a / b);
System.out.println("如果不知道异常是谁?");
} catch (ArithmeticException e) {
System.out.println("除数不能为0");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("数组越界");
}catch(Exception e){
System.out.println("出问题了");
}
System.out.println("over");
}
}
复制代码
打印信息:
数组越界
over
package com.crg_01;
public class ExceptionDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a = 8;
// int b = 2 ;
int b = 0;
int[] arr = { 1, 2, 3 };
try {
System.out.println(arr[3]);
System.out.println(a / b);
System.out.println("如果不知道异常是谁?");
} catch (Exception e) {
System.out.println("出问题了");
}
System.out.println("over");
}
}
复制代码
打印信息:
出问题了
over
注意:1、能明确尽量用明确的异常处理,2、是在明确不了的,用exception 3、平级关系异常,谁在前后无所谓,子父关系,必须是子在前,父在后。父必须在最后面。