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);
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM