异常处理的两种方式

197 阅读2分钟

异常:Throwable

Error:发生Error是没有针对性的代码进行处理的

Exception:发生Exception后有针对性的代码进行处理编译时异常:程序在编译时发生的异常(javac 源文件名.java)

             FileNotFoundException:文件找不到异常

运行时异常:程序在运行时发生的异常(java 字节码文件名)

             NullPointException:空指针异常
             ArrayIndexOutOfBounds:数组下角标越界

抓抛模型:

抛(发生异常): 当程序在正常的执行过程中,如果执行到某行代码时发生异常,那么系统(jvm)将会根据异常的类型创建对应的异常类型的对象并抛出,抛出给代码的执行者,同时终止程序的运行。 两种抛:①系统向外抛 ②手动向外抛

抓(处理异常):

第一种:try——catch——finally

异常处理方式一:try——catch——finally

格式:

try{
    可能会发生异常的代码
}catch(异常类型1 变量名){
    处理异常1的代码;
}catch(异常类型2 变量名){
    处理异常2的代码;
}
...........
finally{
    一定会执行的代码;
}

说明:1、在执行try中的代码时一旦发生异常,系统会根据对应的异常类型创建对象并抛出。 然后会根据catch后面的异常类型进行匹配,一旦匹配成功则执行相应的代码。执行完毕后 如果有finally,那么继续执行finally中的代码,然后挑出try——catch结构继续向下执行。 如果没有和catch后面的异常类型匹配成功,终止程序的执行。如果有finally则继续执行 finally中的代码

2、finally可以省略,finally中的代码一定会执行

3、catch可以有多个,catch后面的异常类型如果存在子父类关系,那么子类在上,父类在下,如果不存在子父类关系,那么谁上谁下都可以

4、可以有的结构方式:try——finally try——catch try——catch——finally

5、处理异常的方式: getMessage() - 异常信息(使用自定义异常时用的比较多) printStackTrace() - 异常的详细信息

6、就算catch中再发生异常,finally也一定会执行

7、就算在try和catch中执行了return,那么finally中的代码也一定会执行,并且最先输出

第二种:throws