需求:在catch的时候记录异常。
问题描述:现在我做的是在finally的时候通过ls_errmsg串来记录,但是发现问题在finally写的时候会出现问题,如插入,删除的时候无响应。如果在各个catch后面都记录的话这样同样的代码要重复多次,希望能得到指点。
public ActionForward doSave(Action action, HttpServletRequest request,HttpServletResponse response) throws Throwable {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String policemanid= (String)request.getSession().getAttribute(Constants.ACC_LOGINNAME);
Hashtable requestData = WebUtil.getRequestData(request);
requestData.put("policemanid", policemanid);
String ls_errmsg = null, ls_ret = null;
try {
AddressBusiness business = (AddressBusiness)BasBusinessFactory
.getBusiness(REG_CODE);
business.doSave(requestData);
RecordSysOperate.setLog(requestData,"保存", Constants.NORMAL_POLICE, "保存核查地址", "普通民警保存核查地点");
} catch (BusinessException e) {
ls_errmsg = e.getMessage();
} catch (DaoException e) {
ls_errmsg = e.getMessage();
} catch (Exception e) {
ls_errmsg = "失败";
} finally {
// RecordSysOperate.setErrorLog(requestData,"保存", "保存核查地址",ls_errmsg);
ls_ret = "{\"success\":" + (ls_errmsg == null ? "true" : "false")
+ ",\"errmsg\":\"" + (ls_errmsg == null ? "" : ls_errmsg)
+ "\"}";
}
PrintWriter out = response.getWriter();
out.print(ls_ret);
out.close();
return null;
}
问题描述:现在我做的是在finally的时候通过ls_errmsg串来记录,但是发现问题在finally写的时候会出现问题,如插入,删除的时候无响应。如果在各个catch后面都记录的话这样同样的代码要重复多次,希望能得到指点。
public ActionForward doSave(Action action, HttpServletRequest request,HttpServletResponse response) throws Throwable {
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String policemanid= (String)request.getSession().getAttribute(Constants.ACC_LOGINNAME);
Hashtable requestData = WebUtil.getRequestData(request);
requestData.put("policemanid", policemanid);
String ls_errmsg = null, ls_ret = null;
try {
AddressBusiness business = (AddressBusiness)BasBusinessFactory
.getBusiness(REG_CODE);
business.doSave(requestData);
RecordSysOperate.setLog(requestData,"保存", Constants.NORMAL_POLICE, "保存核查地址", "普通民警保存核查地点");
} catch (BusinessException e) {
ls_errmsg = e.getMessage();
} catch (DaoException e) {
ls_errmsg = e.getMessage();
} catch (Exception e) {
ls_errmsg = "失败";
} finally {
// RecordSysOperate.setErrorLog(requestData,"保存", "保存核查地址",ls_errmsg);
ls_ret = "{\"success\":" + (ls_errmsg == null ? "true" : "false")
+ ",\"errmsg\":\"" + (ls_errmsg == null ? "" : ls_errmsg)
+ "\"}";
}
PrintWriter out = response.getWriter();
out.print(ls_ret);
out.close();
return null;
}
解决方案 »
- ext.form.TextField空格显示问题
- Spring入门简单的一个小例子,不明白??来者有分
- 请JAVA项目高手来指点一下。项目开发的流程。
- lnnux jsp上传图片拒绝访问
- jsp调用 jasperreport 生成 HTML 文件怎么是空白啊,奇怪了。template是用iReport 1.2.1画的。急死我了.
- 欢迎访问我的CSDN BLOG
- ▲▲▲烦!烦!烦!烦!烦!▲▲▲表单参数传递问题:有【enctype="multipart/form-data">】这句话,不能同时提交两个参数。急!急!急!
- 急求解决方案!
- 为什么Tomcat的设置不成功?
- 有关application变量,一定给分
- 请教jsp查询数据库问题,多谢
- ibatis 查询
为什么要PrintWriter out = response.getWriter();
out.print(ls_ret);
out.close();
这么做?
RecordSysOperate.setErrorLog(requestData,"保存", "保存核查地址",ls_errmsg);
当我在调用到doSave()方法的时候,整个方法就没有相应了,也不报错。
---------------------------------------------------------------------
我需要在方法抛出异常的时候记录日志,假如我在每个catch后面都加上
RecordSysOperate.setErrorLog(requestData,"保存", "保存核查地址",e.getMessage());
这句话,那它在doSave()方法里重复好多次,,有没有更好的策略,只做一次记录,捕捉到所有的异常??
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
String policemanid= (String)request.getSession().getAttribute(Constants.ACC_LOGINNAME);
Hashtable requestData = WebUtil.getRequestData(request);
requestData.put("policemanid", policemanid);
String ls_errmsg = null, ls_ret = null;
boolean resFlg = true; //DB操作结果
try {
AddressBusiness business = (AddressBusiness)BasBusinessFactory
.getBusiness(REG_CODE);
business.doSave(requestData);
RecordSysOperate.setLog(requestData,"保存", Constants.NORMAL_POLICE, "保存核查地址", "普通民警保存核查地点");
} catch (BusinessException e) {
resFlg = false;
ls_errmsg = e.getMessage();
} catch (DaoException e) {
resFlg = false;
ls_errmsg = e.getMessage();
} catch (Exception e) {
resFlg = false;
ls_errmsg = "失败";
} finally {
if(!resFlg){ //判断DB操作结果
RecordSysOperate.setErrorLog(requestData,"保存", "保存核查地址",ls_errmsg);
ls_ret = ls_errmsg;
}else{
ls_ret = "true"
}
}
PrintWriter out = response.getWriter();
out.print(ls_ret);
out.close();
return null;
}
我在finally加个判断就行了,,
if(ls_errmsg != null){
RecordSysOperate.setErrorLog(requestData,"保存", "保存核查地址",ls_errmsg);
}