try-catch-finally处理方式
-
finally是一个可选的。
-
使用try将可能出现异常的代码包装起来,在执行过程中,一旦出现异常, 就会生成一个对应异常类的对象,根据此对象的类型,去catch进行匹配,一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理,一旦处理完成,就跳出当前的try-catch结构(在没有写finally的情况下),继续执行其后的代码。
-
catch中的异常类型如果没有满足子父类关系,则谁声明在上,谁声明在下无所谓
-
catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类上面,否则报错
-
在try结构中声明的变量在出了try结构以后,就不能被调用了
-
try-catch-finally结构可以相互嵌套
-
常用的异常对象的处理方式:
- String getMessage()
- printStackTrace()
try{
//可能出现异常的代码
}catch(异常类型1 变量名1){
//处理异常的方式1
}catch(异常类型2 变量名2){
//处理异常的方式2
}catch(异常类型3 变量名3){
//处理异常的方式3
}
....
finally{
//一定会执行的代码
}
String str="123";
try{
int number=Integer.parseInt(str);
System.out.println("hello-1")
}catch(NumberFormatException e){
System.out.println("出现数值转换异常了,不要着急......")
//处理方式1:getMessage()
System.out.println(e.getMessage());
//处理方式2:printStackTrace()
e.printStackTrace
}
System.out.println("hello-2")
体会:使用try-catch-finally处理编译时异常,使得程序在编译时就不再报错,但是运行时仍可报错,相当于我们使用try-catch-finally将一个编译时可能出现的异常延迟到运行时出现