zoukankan      html  css  js  c++  java
  • 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);
    	}
    }
    
  • 相关阅读:
    ubuntu配置服务器环境
    discuz安装与学习资料
    前端面试题总结(一)
    css公共样式,初始化
    js的解析--预处理(三)
    sass的安装与基础
    移动开发学习笔记(一) 移动开发的注意事项
    移动前端一些常用的框架
    JavaScript的构造器与对象(二)
    JavaScript 中的Object的使用详解笔记(一)
  • 原文地址:https://www.cnblogs.com/ZiYangZhou/p/8196425.html
Copyright © 2011-2022 走看看