异常的概念:
当程序出现异常时,安全退出处理过后,继续执行下面的代码
异常机制:
当JVM执行到异常的时候会new异常对象,并且会将异常对象抛出,哪个方法调用的就跑给谁,一级一级往上抛
异常的分类:
1、RuntimeException(运行时异常,编译时不报错)
2、CheckedException(编译时异常,编译时报错,必须处理)
异常的处理方式:
第一种方式:在方法声明的时候使用throws关键字抛出(抛给上一级)(声明时异常),
声明时异常的特点:当JVM遇到异常时后面的代码都不会执行,程序结束
第二种方式:通过try{...}catch(异常对象){...}来捕捉异常,try语句块里边写的是可能会遇到异常的代码,catch用来捕捉异常
try要点:当我们运行try里边的代码时,如果遇到异常下面的代码也不会执行,直接跳到catch语句块中捕捉异常
catch要点:可以多个catch(){},用逗号隔开,从上到下,从小到大,从子类到父类。意思就是当我们捕捉异常时,如果上面的catch语句块写的是父类,那么会直接捕捉父类异常,子类异常写在下边没意义,而且这样的异常捕捉到的错误信息会非常模糊。
try的扩展finally语句块:
讲了上面的try语句,现在讲讲他们的扩展finally语句块
finally语句块就是一种保障,他在语句中不管是否遇到了异常都必须执行,通常使用finally语句块完成IO流的关闭。不多bb,看图: