快速业务通道

AOP@Work: 使用方面的下几个步骤-学习建议之后 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
r);       e.setInitialMethod(staticPart.getSignature().getName());    }  } }

在该层,我记录了异常的一段额外上下文,也就是在进入模型时正在执行的 对 象。然后可以在 Web 层使用该信息为用户提供帮助信息,如清单 6 所示:

清单 6. 用于用户界面错误处理的方面

aspect UIErrorHandling {  pointcut actionMethod (ActionMapping mapping,   HttpServletRequest request) :    execution (ActionForward Action.execute(..)) &&    args(mapping, *, request, *) && within(com.example..*);  ActionForward around(ActionMapping mapping,   HttpServletRequest request) :   actionMethod(mapping, request) {    try {       return proceed(mapping, request);    } catch (NoRemoveInUseException e) {      addError("error.noremoveinuse", e.getCurrent());        return mapping.getInputForward();    } catch (ModelException e) {      return handleError(e, mapping, request);    }    catch (InvocationTargetException e) {      ApplicationException ae =        new ApplicationException("populating form ", e);      return handleError(ae, mapping, request);    }    catch (Throwable t) {      ApplicationException ae =        new ApplicationException("unexpected throwable ", t);      return handleError(ae, mapping, request);    }  }  private ActionForward handleError(ApplicationException ae,    ActionMapping mapping, HttpServletRequest request) {    // track information to correlate with user request    ae.setRequest(request);     ae.logError(getLogger()); // logs context information...     session.setAttribute(Constants.MESSAGE_TEXT,      translate (e.getMessage()));    session.setAttribute(Constants.EXCEPTION, e);    return mapping.findForward(Constants.ERROR_PAGE);  }  private void addError(String errorId, Object current) {      // get name and key from Entity objects    // then add a Struts action error  }    }

AOP@Work: 使用方面的下几个步骤-学习建议之后(12)

时间:2011-09-07 IBM Ron Bodkin

UIErrorHandling 方面负责确保 com.example 包或其子包中的任何 Struts 动作均记录错误并进行处理。对于可恢复的错误(由 NoRemoveInUseException 表示),它只将错误及其相关上下文数据(正在使用的对象)提供给用户,并返 回至同一页面。对于其他错误,它将其转换为应用程序异常(其模型异常是子类 型),并指派给通用错误处理逻辑。错误处理逻辑记录 Web 请求的相关信息, 以 使错误与用户和会话相关联。最后它重定向至错误页面,将遇到的异常存储为附 加属性。

转发页面中存储的属性允许添加带信息的 HTML 备注,支持人员可以使用该 备注将用户错误与已记录的异常相关联。注意,应用程序异常被特殊记录: logError() 方法记录被捕获的所有附加上下文信息,其中提供了信息的 “黑盒 记录” 以确保可以隔离、重新生成和修复错误,而无需您思考 NullPointerException 中什么可能为空。特别是,它记录所有相关信息,比如 调用树中记录的参数和关键对象,以及传统的堆栈跟踪。

扩展库方面

最后,让我们看一下当希望基于现有库方面进行构建时会发生什么。在这种 情况下,我扩展了 Glassbox Ins

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号