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);
        }
    }
复制代码

 

posted @   xjw12345  阅读(157)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示