一、JAVA异常简介
1》异常简介:
a、异常处理的作用
b、Java异常体系结构的简介
2》处理异常:
a、try-catch以及try-catch-finally
b、抛出异常
c、自定义异常
d、异常链
3》异常定义:
有易于常态,和正常情况不一样,有错误出现,阻止当前方法或作用域,称之为异常。
4》异常的体系结构
Throwable----->Error :不常见的错误类型,通常指系统错误,比如:虚拟机错误或线程死锁(程序终结者)
|
|------------->Exception:异常,比如指编码、环境、用户操作输入出现问题
|-------->非检查异常:RuntimeException:比如空指针异常、数组下标异常、算数异常
|-------->检查异常:比如:文件异常、SQL异常
二、处理异常
1》try {
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}
如果try中确实发生异常了,程序将会终止执行,程序的控制权将被移交给catch块中的异常处理程序。
catch如何处理呢?可以发出警告,或者记录错误日志。
2》多重try-catch块
处理不同的异常
注:catch块是先子类后父类。
3》try-catch-finally
try {
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}...(n个catch块)...{
}finally{
//最终将要执行的一些代码
}
三、Java中异常抛出以及自定义异常
1》异常抛出
throw:将产生的异常抛出(动作)
throws:写在方法名和方法参数表之后,方法体之前,可抛出多种异常,每个异常用 , 隔开
声明将要抛出何种类型的异常(声明)
public void 方法名(参数列表) throws 异常列表{
//调用会抛出异常的方法或者:
throw new Exception() ;
}
2》自定义异常
自定义异常:自己定义的异常类型
class 自定义异常类 extends 异常类型{}
四、异常链
1》定义:捕获的异常包装成新的异常,新的异常添加对原始异常的引用,再把新的异常抛出。
五、实际应用的经验和总结
1》处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2》在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3》对于不确定的代码,也可以加上try-catch,处理潜在的异常
4》尽量去处理异常,切忌只是简单的调用printStackTrace()去打印输出,可加以适当的辅助,例如:业务的回滚
5》具体如何处理异常,要根据不同的业务需求和异常类型去决定。
6》尽量添加finally语句块去释放占用的资源