一、异常处理(捕获异常)
1、try-catch-finally
-
1.1 try
try:尝试 将有可能出现异常的代码 使用try包括起来 try不能单独出现,必须结合catch或者finally来使用
-
1.2 catch
catch:捕获 表示出现异常并且捕获到该异常将会执行的代码块
-
1.3 finally
finally :最终 用于表示不管是否出现异常 不管异常是否被捕获到 都将执行的代码 finally不能单独出现 必须结合try或者 try-catch finally里面的内容无论是否发生异常都会执行;但是有不执行的唯一情况; 1、当try代码块有异常,且catch代码块中有“System.exit(1); // 退出JVM虚拟机”语句时,不执行finally; 2、当try代码块无异常,且try代码块中有“System.exit(1); // 退出JVM虚拟机”语句时,不执行finally;
-
1.4 try-catch-finally
try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一
2、 面试题
try-catch块中存在return语句,是否还执行finally块? 如果执行,说出执行顺序。
依然执行finally块,但是return值已经固定,fianlly里面对返回值的操作均无效;除非finally块中也有return,此时try-catch-finally结构外部不能再存在return,但是此时finally块中会有警告,不建议使用这种操作;
1.不要在finally对返回值做操作
2.不要在finally中return值
3.finally中不加return,finally中对返回值的操作不会改变catch或者try中的return值
二、声明异常 - throws
1、throws
用于表示声明本方法可能会出现的异常 通知给调用者
调用者可以:
1、使用try-catch处理
2、继续声明给JVM虚拟机
2、检查异常和运行时异常
除了RuntimeException和其子类 其他的都称之为检查异常 方法声明 了检查异常 调用者必须处理
RuntimeException和其子类 称之为运行时异常 方法声明了运行时异常 调用者不是必须处理
三、抛出异常
throw用于表示抛出异常,可以作为一条语句单独使用,抛异常之后不能再写代码,每一句只能抛出一个异常
throws表示声明异常,书写在形参列表之后,可以声明多个异常,多个异常使用逗号分隔,表示本方法有可能出现的异常
throw使用:
throw和throws的区别:
四、自定义异常
JDK提供的异常有时候不能满足开发需求,我们可以自己定义异常。
我们可以自定义类继承Exception或者RuntimeException来实现异常定义。