目录
一.try-catch-finally:在代码中捕获发生的异常,自行处理,程序中可以有多个try-catch-finally
二.throws:将发生的异常抛出,交给调用者来处理,最顶级的处理者为JVM
三.自定义异常:当程序中出现了某些异常,系统没有此异常的描述信息,则可以自己设计异常类来描述该异常的信息
异常处理:当异常发生时,对异常处理的方式
一.try-catch-finally:在代码中捕获发生的异常,自行处理,程序中可以有多个try-catch-finally
try {
// 有可能发生异常的代码
} catch (Exception e) {
// 1.捕获到异常
// 2.当异常发生时,系统将异常封装到Exception对象e传递给catch
// 3.得到异常对象后程序员进行处理
// 4.如果没有发生异常,catch代码块不执行
}finally{
// 不管有没有异常都要执行
// 一般将释放资源的代码放在finally里
}
1.如果发生了异常,异常后面的代码不会执行,直接进入catch里
2.如果没有发生异常,则顺序执行try里的代码,并不会进入catch
3.如果有无论有没有异常都需要执行的代码,需要放在finally里。如:关闭连接、释放资源等
4.可以有多个catch语句来捕获不同的异常,要求子类异常在前,父类异常在后
5.可以try-finally。这样相当于没有捕获异常
二.throws:将发生的异常抛出,交给调用者来处理,最顶级的处理者为JVM
1.一个方法可能生成某种异常,throws不对该异常进行处理,而是声明并抛出异常,由该方法的调用者来处理
2.throws后面的异常类型可以是方法中产生的异常,也可以是该异常的父类
3.对于编译异常,程序中必须处理。
4.对于运行异常,程序如果没有处理,默认以throws进行处理
5.子类重写父类的方法时,子类抛出的异常要么和父类抛出的异常一致,要么为父类抛出异常的子类
6.try-catch-finally和throws有一个即可
三.自定义异常:当程序中出现了某些异常,系统没有此异常的描述信息,则可以自己设计异常类来描述该异常的信息
1.自定义类名可以自己写,但需要继承Exception或RuntimeException
2.继承Exception为编译异常
3.继承RuntimeException为运行异常(一般继承RuntimeException)
4.throw和throws的区别