异常:程序运行期间出现的问题
Throwable,所有错译或异常的父类,位于java.lang包
1. Error:(错误)
2. Exception:(异常)
1.运行时异常:(RunTimeException)
代码运行后才会出现的
例如:
1.空指针异常:java.lang.NullPointerException
2.数组越界:java.lang.ArrayIndexOutOfBoundsException
3.类型转换异常:java.lang.ClassCastException
4.算数异常:java.lang.ArithmeticException
2.检查异常:(编译时显示报错的异常)
(CheckedException)必须处理
异常的处理:
1.try{} catch(){}
public static void test1(){
String name = null;
//将有可能发生的异常代码,try{} 包裹
try {
System.out.println(name.getClass());
}catch(Exception ex){
//打印异常信息
ex.printStackTrace();
}
System.out.println("---");
}
2.多重catch
2.1:多重catch不能把父类Exception放在前面
try {
System.out.println(obj.getClass());
Integer it = (Integer) obj;
System.out.println(it);
}catch(NullPointerException ex){
System.out.println("空指针异常");
}catch (ClassCastException ex) {
System.out.println("类型转换异常");
}catch(Exception ex){
System.out.println("其他异常");
}
3.JDK1.7以后多重catch语法
public static void test3(Object obj) {
try {
System.out.println(obj.getClass());//根据传过来的参数可能存在空指针异常
Integer it = (Integer) obj;//根据传过来的参数可能出现类型转换异常
System.out.println(it);
} catch (NullPointerException | ClassCastException ex) {
if (ex instanceof NullPointerException) {
System.out.println("abc");
} else {
System.out.println("def");
}
}
}