什么是异常?
异常是程序在“编译”或者“运行”的过程中可能出现的问题。
异常分类
Error:系统级别问题、JVM退出等,代码无法控制。
Exception:称为异常类,它表示程序本身可以处理的问题。
异常分为:编译期异常和运行期异常
异常的特点
编译期异常的特点
编译时异常:继承自Exception的异常或者其子类
编译阶段报错,必须处理,否则代码不通过。
运行期异常的特点
运行时异常:直接继承自RuntimeException的异常或者其子类
编译阶段不报错,运行可能报错。
异常处理
编译期异常处理
编译期异常的处理形式有三种:
1、出现异常直接抛出去给调用者,调用者也继续抛出去。
2、出现异常自己捕获处理,不麻烦别人。
3、前两者结合,出现异常直接抛出去给调用者,调用者捕获处理。
异常处理方式1 —— throws
throws:用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理。
这种处理方式并不好,发生异常的方法自己不处理异常,如果异常最终抛出去给虚拟机将引起程序死亡。
抛出异常格式:
规范做法:
当方法中出现很多个异常时,可以这样写;代表可以抛出一切异常
异常处理方式2 —— try…catch…
监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理。
格式:
建议格式:
处理方式3 —— 前两者结合
方法直接将异通过throws抛出去给调用者 ,调用者收到异常后直接捕获处理。
运行期异常处理
运行时异常编译阶段不会出错,是运行时才可能出错的,所以编译阶段不处理也可以。
按照规范建议还是处理:建议在最外层调用处集中捕获处理即可。
如下: