首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[异常处理] 同时捕获两种(多种)异常的两种方法

[异常处理] 同时捕获两种(多种)异常的两种方法

作者头像
master336
发布2026-06-15 19:53:10
发布2026-06-15 19:53:10
50
举报

使用场景

实际开发中当一个功能需要借助很多子模块合并处理,各子模块抛出的异常不同且无需关心(或仅仅需要关注其中的几种)异常类型,有如下两种方法:

  1. catch中根据要不要处理,合并多个异常。
  2. 使用父类异常(如Exception) 进行捕获,然后使用instanceof 过滤需要(或不需要)的异常。

代码演示

代码语言:javascript
复制
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class Test01 {
    /**
     * 多个异常同时catch
     * @param args
     */
    public static void main(String[] args) {
        try {
            Class.forName("java.lang.String");
            new FileInputStream("demo.txt");
        }catch (ClassNotFoundException | FileNotFoundException e) {
            // 第一种方式,直接将两种异常放到一个catch中处理
            e.printStackTrace();
            System.out.println("干点啥的时候发生了异常,但是又不想对外公开,可以合并处理");
        }catch (Exception e) {
            // 第二种方式,使用他们的父类进行捕获,然后根据类型去处理
            e.printStackTrace();
            if(e instanceof ClassNotFoundException) {
                System.out.println("ClassNotFoundException");
            }else if(e instanceof FileNotFoundException) {
                System.out.println("FileNotFoundException");
            }else  {
                System.out.println("Other Exception:" + e.getClass().getName());
            }
        }
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景
  • 代码演示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档