java---异常处理(程序在运行时)
1,概念:提高容错性;正常情况下不执行,当异常时候执行处理代码;
2,避免异常:通过措施是防止发生
处理异常:已经发生,怎么挽救
3,异常的分类:
1) Throwable 父类 :
子类 a) Error 错误 非常严重的底层错误,严重到不可避免,无法处理
子类 b) Exception 异常 ==》本章重点是 异常处理(exception 处理)
二级子类 a) RuntimeException: 未检查异常;
可以避免,可处理可不处理;
三级子类...
b) 非RuntimeException: 已检查异常;
不可避免,必须处理;
如果一个程序可能发生已检查异常,而程序员未加以处理,程序的编译出错。
java---异常的产生,传递,处理:
1,产生:throw:动作,抛出一个异常,将异常对象作为方法的返回值返回;
throw 等同于 return语句;
当多重循环中发生异常,此异常将逐层向外抛给上一级,直至抛到jvm虚拟机,
虚拟机将作出中止操作,
2,传递:异常对象 沿着方法调用链反向传递,直至jvm,最终导致程序中止
3,异常的处理:抛已检查异常时候必须处理,否则编译不通过
抛未检查异常时候可以不处理,编译可通过
1) throws:声明抛出:
static void mc(int a) throws FileNotFoundException,EOFException{ };
多种异常中间用逗号隔开;
JVM <==> main <==> ma <==> mb <==>mc
从mc抛到jvm虚拟机:
public class TestException{
public static void main(string[] args) throws Throwable{
static void ma(int a) throws Exception{}
static void ma(int a) throws IOException,SQLException{}
static void ma(int a) throws FileNotFoundException,EOFException,SQLException{}
}
}
4, 方法抛异常由咱们自己处理,加 throws Exception 或是其他抛类
5, 以上的为消极的异常处理,不做处理,只是抛出给上一级,
以下为积极的处理方式:
1) try-catch :捕获异常
try{} // 当try中遇到异常,跳出到catch中;
catch(IOException e){}
catch...{} // 可以跟多个catch;但是注:先catch子类异常,再catch父类异常
2) try-catch-finally
finally: 无论有没有异常都会执行,主要用来释放资源,
当try中有throw异常或是return时候,finally中的代码要先于 try和catch中的throw或是return代码执行;
如果 finally中有return语句,只执行finally中return。
3) try-finally: