论坛首页 入门技术论坛

service层的异常为什么不能被捕获?

浏览 2079 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-04-25  
DAO
项目中service层有一方法。如下
public void delCardType(String[] id) throws Exception {
try {
for (int i = 0; i < id.length; i++) {
CardType ct = (CardType) dao.get(CardType.class, id[i]);
dao.delete(ct);
}
log.info("=========开始删除关系========");
goods.deleteCardsRelationshipByCTId(id);
log.info("=========删除关系结束========");
} catch (ConstraintViolationException cve) {
throw new DataOperationException("卡目录已经被引用:", cve);
} catch (Exception e) {
throw new DataOperationException("删除卡类型异常:", e);
}
}

该方法通过ejb的接口在某删除acation中去调用。service中日志log.info("=========删除关系结束========");
都已经输出 且deleteCardsRelationshipByCTId也已经被执行。但是在action却进入到了exception方法内部。输出日志log.info("======================调用remoteInterface.delCardType(id)方法失败了=================");

public ActionForward doIt(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
try {
log.info("***************已经进入DelCardTypeAction*************");
String[] id=request.getParameterValues("checkbox");
remoteInterface.delCardType(id);
log.info("****************调用remoteInterface.delCardType(id)方法*************");
ProcessResult pr = ProcessResult.createInfoResult("delete.success","卡类型");
request.setAttribute("pr", pr);
return mapping.findForward("go");
}catch (Exception e) {
log.info("======================调用remoteInterface.delCardType(id)方法失败了=================");
ProcessResult pr = ProcessResult.createErrorResult("对不起,您所选择删除的卡类型已经被引用,删除失败",e);
request.setAttribute("pr", pr);
return mapping.findForward("error");
}
}

请高手们指点!
   发表时间:2008-04-25  
remoteInterface.delCardType(id);
log.info("****************调用remoteInterface.delCardType(id)方法*************");
ProcessResult pr = ProcessResult.createInfoResult("delete.success","卡类型");
上面2个 方法 放在一个try catch语句里,如果createInfoResult方法抛出异常,你的log也会输出
info("======================调用remoteInterface.delCardType(id)方法失败了=================");
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics