/**
* JDK7出现了一个新的异常处理方案:
* try {
*
* } catch (异常1 | 异常2 ... 变量) {
*
* }
*
* 注意:这个方法虽然简洁,但是也不够好。
* A:处理方式是一致的。(实际开发中,好多时候可能针对同类型的问题,给出同一个处理)
* B:多个异常间必须是平级关系。
*/
public class Test {
public static void main(String[] args) {
method();
}
private static void method() {
int a = 10;
int b = 0;
int[] arr = {1, 2, 3};
// try {
// System.out.println(a / b);
// System.out.println(arr[3]);
// System.out.println(arr[3]);
// System.out.println("出现了一个异常");
// a = 20;
// } catch (ArithmeticException e) {
// System.out.println("除数不能为0");
// } catch (ArrayIndexOutOfBoundsException e) {
// System.out.println("数组索引越界");
// } catch (Exception e) {
// System.out.println("出现异常情况");
// }
// JDK1.7
try {
System.out.println(a / b);
System.out.println(arr[3]);
System.out.println(arr[3]);
System.out.println("出现了一个异常");
a = 20;
} catch (ArithmeticException | ArrayIndexOutOfBoundsException e) {
System.out.println("出现异常情况");
}
/*
* 多个异常必须是平级关系
The exception ArithmeticException is already caught by the alternative Exception
catch (ArithmeticException | ArrayIndexOutOfBoundsException | Exception e) {
System.out.println("出现异常情况");
}
*/
System.out.println("over");
}
}
编译时异常和运行时异常的区别
编译期异常:Java程序必须显示处理,否则程序就会发生错误,无法通过编译运行期异常:无需显示处理,也可以和编译时异常一样处理