异常简介
阻止当前方法或作用域,称之为异常
Throwable类是Java语言中的所有错误或异常的超类。
两个子类是 Error 和 Exception
包括RuntimeException(非检查异常)和(检查异常)
常见的RuntimeException异常有:NullPointerException(空指针异常)、ArrayIndexOutOfBoundsException(数组下表越界异常)、ClassCastException(类型转换异常)、ArithmeticException(算术异常)。
RuntimeException有Java虚拟机自动抛出、自动捕获。
常见的检查异常有:IOException(文件异常)、SQLException(SQL异常)等等,需要程旭员自行添加语句捕获该类异常。
处理异常
try-catch 以及 try-catch-finally
语法:
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}
抛出异常后,程序会终止执行。程序的控制权将被移交给catch块中的异常处理程序
利用多个catch块捕获异常进行处理。
多重catch异常处理,先处理子类异常。
语法:
try{
//一些会抛出异常的方法
}catch(Exception e){
//处理该异常的代码块
}catch(Exception 2e){
//处理Exception2的代码块
}...(n个catch块)...{
}finally{
//最终将要执行的一些代码
}
Java中的异常抛出以及自定义异常
throw —— 将产生的异常抛出(动作)
throws —— 声明将要抛出的何种类型的异常(声明)
public void 方法名(参数列表) throws 异常列表{
//调用会抛出异常的方法或者:
throw new Exception();
}
自定义异常
class 自定义异常类 extends 异常类型{
}
Java中的异常链
经验总结
1.处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2.在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3.对于不确定的代码,也可以加上try-catch,处理潜在的异常
4.尽量去处理异常,切记只是简单的调用printStackTrace()去打印输出
5.具体如何处理异常,要根据不同的业务需求和异常类型去决定
6.尽量添加finally语句块去释放占用的资源