java外部捕获了异常,但是并没有打印异常和将异常信息写入日志文件

问题描述

今天在做一个客户需求的二次开发,出现了一个java数组越界但是并没有抛异常,也没有写日志的情况。在公司的系统中,用户提交的表单可能包含有多个明细表。用户提交表单以后可以通过多个Action进行后续的数据校验,数据同步到异构系统等,可根据用户的需求进行灵活的开发。DetailTable[] detailTables = request.getDetails();通过这种方法就可以获取到表单中的所有明细表,然后通过明细表索引来获取。写了大致如下的一个类,结果自己测试的时候发现一直没有正确的结果,查看日志也并没有什么相关的异常信息,通过debug排查之后才发现是数组越界的问题,但是系统调用(我们开发人员写好Action类,然后通过系统后台配置就可以使用这个Action了)的时候在外层捕获了异常,并且没有打印异常,也没有将异常写进日志中去。这个问题挺隐秘的,前人挖的坑啊。

class MyAction implements Action {

    @Override
    public String execute(Request request) {
        DetailTable[] detailTables = request.getDetails();
        int index = 3;
        doSomething(detailTables[index]);
        return SUCCESS;
    }

    public void doSomething(DetailTable detailTable) {

    }

}

原因

外层捕获异常,但是并没有打印异常或者写进日志文件。

public class App {
    public static void main(String[] args) {
        MyAction action = new MyAction();
        String back = Action.SUCCESS;
        try {
            back = action.execute();
        } catch (Exception e) {
        }
        System.out.println(back);
    }
}

转载于:https://www.cnblogs.com/ZiYangZhou/p/8196425.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值