异常: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