try catch捕获异常时,注意异常类,避免erro类捕获不到

文章讨论了在Java中,由于TokenMgrError异常不是Exception的子类,导致在try-catch块中没有被捕获到的问题。通过将异常类型改为Throwable,解决了异常的捕获问题。主要内容涉及SQL语句的语法检查和异常管理。
摘要由CSDN通过智能技术生成

我们在使用try catch捕获异常时,要注意异常类型,类型错误会导致捕获不到。

例如这段代码:

    public static void main(String[] arg) {
        checkDataScript(2, "select * from { table1 }");
    }


    /**
     * 校验sql语法是否正确
     *
     * @param type 类型 0:查询,1:新增,2:更新,3:删除
     */
    public static String checkDataScript(Integer type, String sqlContent) {
        String msg;
        try {
            Statement parse = CCJSqlParserUtil.parse(sqlContent);
            switch (type) {
                case 3:
                    msg = (parse instanceof Delete) ? "" : "执行脚本不是delete语句";
                    break;
                case 2:
                    msg = (parse instanceof Update) ? "" : "执行脚本不是update语句";
                    break;
                case 1:
                    msg = (parse instanceof Insert) ? "" : "执行脚本不是insert语句";
                    break;
                default:
                    msg = (parse instanceof Select) ? "" : "执行脚本不是select语句";
                    break;
            }
        } catch (Exception e) {
            System.out.println("sql校验异常");
            e.printStackTrace();
            msg = "执行脚本语句语法错误";
        }
        System.out.println(String.format("msg:%s", msg));
        return msg;
    }

执行结果:

因为TokenMgrError异常不是Exception的子类,导致异常并未被捕获到。

异常类关系:

我们这里将异常类型改为Throwable

执行结果:

捕获到了异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值