finally代码块以及多异常的捕获处理的注意事项
finally代码块
finally定义:
有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。
而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。
格式:
try{ 可能产生异常的代码 }catch(定义一个异常的变量,用来接收try中抛出的异常对象){ 异常的处理逻辑,产生异常之后怎么处理异常 一般在工作中,会把异常的信息记录到日志中 } ...... catch可以拥有多个 catch(异常类名 变量名){ }finally{ 无论是否出现异常都会执行 }
注意:
1.finally不能单独使用,必须和try一起使用
2.finally一般用于资源释放(资源回收),无论程序是否出现异常,最后都要资源释放
public static void main(String[] args){ try { //可能会产生异常的代码 mehtod("G:\\d.txt"); } catch (FileNotFoundException e) { // 异常的处理逻辑 e.printStackTrace(); }finally { //无论是否出现异常,都会执行 System.out.println("资源释放"); } } /** * 定义一个方法,对传递的文件路径进行合法性判断 * 如果路径不是""c:\\a.txt"",那么我们就抛出文件找不到异常对象,告知方法的调用者 * 注意: * FiLeNotFoundException是编译异常,抛出了编译异常,就必须处理这个异常 * 可以使用throws继续声明胧出FiLeNotFoundException这个异常对象,让方法的调用者处理 */ public static void mehtod(String fileName) throws FileNotFoundException { if (!fileName.equals("G:\\c.txt")){ throw new FileNotFoundException("传递的文件路径不是G:\\c.txt"); } System.out.println("路径正确"); }
多异常的捕获处理的注意事项
多个异常使用捕获又该如何处理呢
1、多个异常分别处理。
public static void main(String[] args){ // 1、多个异常分别处理 try { int[] arr = {1,2,3}; System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3 } catch (Exception e) { System.out.println(e); } try { List<String> list = new ArrayList<>(); System.out.println(list.get(0));//java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 } catch (Exception e) { System.out.println(e); } }
2、多个异常一次捕获,多次处理。
public static void main(String[] args){ //2、多个异常一次捕获,多次处理 try { int[] arr = {1,2,3}; //System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3 List<String> list = new ArrayList<>(); System.out.println(list.get(0));//java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 } catch (ArrayIndexOutOfBoundsException e) { System.out.println(e); } catch (IndexOutOfBoundsException e){ System.out.println(e); } }
3、多个异常一次捕获一次处理。
public static void main(String[] args){ //3、多个异常,一次捕获,一次处理 try { int[] arr = {1,2,3}; System.out.println(arr[3]);//java.lang.ArrayIndexOutOfBoundsException: 3 List<String> list = new ArrayList<>(); System.out.println(list.get(0));//java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 } catch (Exception e){ System.out.println(e); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix