异常的定义:程序在运行过程中出现的意外情况.
异常的分类:Error类和Exception类
1.Error类 一般与代码编写无关,是虚拟机内部的问题,如JVM没有足够的内存提供给垃圾回收器,将导致应用程序的中断,不应该捕获他们。
2.Exception类又分为:RuntimeException及其所有子类,非RuntimeException及其所有子类。
a.RuntimeException(运行时异常/非受检异常):这一类异常属于程序编写缺陷,该类异常在语法上不强制必须处理,不处理也不会出现语法上的错误,编译能通过。
b.非RuntimeException(受检异常):这一类异常属于程序外部问题引起的异常,如要操作的文件找不到,访问网络资源时网卡。这类异常必须处理,否则语法报错无法编译.。
异常的处理:
try语句块:将一个或者多个语句放入try语句块,表示这些语句可能会抛出异常,JVM会在执行这段代码时进行监控,消耗JVM资源。
catch语句块:try语句块发生异常,JVM查找对应catch语句块执行异常处理。catch语句块会对括号里的异常进行instanceof测试,查看是否匹配,匹配则进行处理。
finally语句块:无论异常有没有发生,该代码块一定执行。即使try块里有break,continue,return,也会执行,一般代码块里写释放资源的代码。
声明异常:throws:声明方法可能会抛出异常,告诉调用者,可能会发生异常,且没有处理异常。
如果方法没有显式处理可能出现的受检异常(非运行时异常),就必须进行声明。非受检异常可以声明也可以不声明。
语法: pblic void method() throws IOException,otherException{}
手动抛出异常:throw
自定义异常:
try-with-resources:JDK7 try-with-resources语句块可以自动关闭相关资源,声明了一个或者多个资源,如IO流操作的复制,则声明了in out两个资源.
语法:try( ){ } 小括号里声明资源,花括号执行语句
catch(|):声明多个异常 用|分割开.