异常
什么是异常?
异常就是程序运行过程中出现了不正常现象导致程序中断。在java中,把各种异常现象进行了抽象形成异常(Exception)。异常类(Exception)分为:受检异常(编译异常)和运行时异常类(RuntimeException)。
对于异常我们一般都会进项预处理,值得一提的是,进行预处理的异常只有受检异常(编译异常)
异常处理有两种方式:捕获处理和抛出处理:
捕获处理:
格式:
try{
对可能产生异常的代码块进行检视
}catch(异常类型 e1){
e1.printStackTrace();
}finally{
}
关于try:
如果try代码块的某条语句产生了异常,就立即跳转到catch子句执行,try代码块后面的代码不再执行
try代码块可能会有多个受检异常需要预处理,可以通过多个catch子句分别捕获。
关于catch:
在开发阶段,一般的处理方式要么获得异常信息,要么打印异常栈跟踪信息
调用 e1.printStackTrace()方法
在部署后,一般把异常信息打印到日志文件中
如果捕获的异常类型有继承关系,则先捕获子异常,再捕获父异常;若没有继承关系,则没有先后顺序
关于finally:
不管是否产生异常,finally语句总会执行。一般情况下。会把释放系统资源的代码放到finally中
抛出处理:
格式:
方法名throws 异常名{
}
谁调用这个方法,谁负责处理该异常。
在定义方法时,把异常抛出是为了提醒方法的使用者,有异常需要预处理。
异常处理的选择问题:
一般情况下,在调用其他方法时,如果被调用的方法有受检异常需要预处理,选择捕获处理
在定义方法时,如果方法体中有受检异常需要预处理,可以选择捕获处理也可以选择抛出处理