当前位置: 首页 > news >正文

雅安市网站建设_网站建设公司_门户网站_seo优化

个人网站建设方案书怎么写,屏蔽阿里云网站吗,sem百度竞价推广,上海市工商局企业查询在这篇博客文章中#xff0c;我描述了如何使用AspectJ自动将一种异常类型转换为另一种异常类型。 问题 有时#xff0c;我们处于必须将异常#xff08;通常由第三方库引发#xff09;转换为另一种异常的情况。 假设您使用的是诸如hibernate之类的持久性框架#xff0c;并… 在这篇博客文章中我描述了如何使用AspectJ自动将一种异常类型转换为另一种异常类型。 问题 有时我们处于必须将异常通常由第三方库引发转换为另一种异常的情况。 假设您使用的是诸如hibernate之类的持久性框架并且您不想将hibernate特定的异常泄漏到某个应用程序层之外。 也许您正在使用不止一种持久性技术并且想将技术特定的异常包装到一个通用的基本异常中。 在这种情况下可以以如下代码结尾 public class MyRepository {public Object getSomeData() {     try {// assume hibernate is used to access some data} catch(HibernateException e) {// wrap hibernate specific exception into a general DataAccessExceptionthrow new DataAccessException(e);}} } 如果每次访问某个框架都必须这样做那么这当然很丑。 AspectJ方式 AspectJ是Java的面向方面的编程 AOP扩展。 使用AspectJ我们可以定义横切关注点为我们处理异常转换过程。 首先我们必须将AspectJ依赖项添加到我们的项目中 dependencygroupIdorg.aspectj/groupIdartifactIdaspectjrt/artifactIdversion1.7.4/version /dependency 接下来我们必须为AspectJ设置ajc编译器和字节码编织器。 此步骤取决于您使用的开发环境因此在此不再赘述。 Eclipse用户应该查看用于Eclipse的AspectJ开发工具AJDT 。 IntelliJ IDEA用户应确保启用AspectJ插件 。 还有一个AspectJ Maven插件可用请检查此pom.xml以获取示例配置。 现在让我们使用AspectJ批注定义方面 Aspect public class ExceptionTranslationAspect {Around(execution(* com.mscharhag.exceptiontranslation.repository..*(..)))public Object translateToDataAccessException(ProceedingJoinPoint pjp) throws Throwable {try {return pjp.proceed();} catch (HibernateException e) {throw new DataAccessException(e);}} } 使用Aspect批注我们可以声明一个新的方面。 在这方面我们使用Around批注定义一个建议如果传递的切入点匹配则始终执行该建议。 在这里切入点 execution(* com.mscharhag.exceptiontranslation.repository..*(..)) 每次执行com.mscharhag.exceptiontranslation.repository包中的类的方法时告诉AspectJ调用translateToDataAccessException。 在translateToDataAccessException中我们可以使用传递的ProceedingJoinPoint对象来进行我们截获的方法执行。 在此示例中我们仅在方法执行周围添加了一个try / catch块。 使用ProceedingJoinPoint实例我们还可以做更多有趣的事情例如使用pjp.getSignature分析方法签名或使用pjp.getArgs访问方法参数。 现在我们可以从上面显示的示例存储库实现中删除try / catch块并使用简单的测试来验证我们的方面是否正常工作 public class MyRepositoryTest {private MyRepository repository  new MyRepository();Test(expected  DataAccessException.class)public void testExceptionTranslation() {this.repository.getSomeData();} }结论 使用AspectJ我们可以轻松地自动执行Java运行时异常的转换。 通过删除try / catch块否则将简化异常转换从而简化了我们的代码。 您可以在GitHub上找到示例项目的完整源代码。 参考 Java我们的JCG合作伙伴 Michael Scharhag在mscharhagProgramming and Stuff博客上使用AspectJ进行了异常转换 。 翻译自: https://www.javacodegeeks.com/2014/02/java-exception-translation-with-aspectj.html
http://www.lebaoying.cn/news/74268.html

相关文章:

  • 产品开发流程表梧州网站seo
  • 加若格网站做么样公众号开发教程视频
  • 如何做网站运营qq浏览器在线网页
  • 网站内链检测工具网站前台功能介绍
  • 南浔区住房和城乡建设局网站网站建设的十点优势
  • 网站qq弹窗网站背景磨砂灰背景怎么做
  • 深圳外贸英文网站设计联系电话app开发费用价目表
  • 网站关键词优化到首页难度wordpress discuz 统一账号
  • 腾讯网站的品牌建设计划做死活题网站
  • 自助建网站平台怎么收费教育行业网站设计
  • 图片加字在线制作宁波seo如何做推广平台
  • 网站数据库分离怎么做wordpress中文百科
  • 国外做软件界面的设计网站北京网站建设联系兴田德润
  • 如何做网站镜像怀柔网站制作公司
  • 网站备案号显示红色电商购物网站开发
  • 泸州 网站建设国外做logo的网站
  • 上海网站制作多少钱wordpress 学术 模板下载
  • 东营企业网站建设网上交易平台网站建设公司
  • 青岛电子商务的网站建设外贸网站优化
  • c 语言网站建设网站建设客户常问到的问题
  • 怎么才能创建一个网站免费网站在线观看人数在哪直播
  • 网站不能访问如何做冗余紧急通知河南全省暂停
  • 做一个电子商务网站在哪里做制作短链接网站
  • asp网站做视频重庆公共信息交易资源网
  • 安卓商城网站开发网络规划设计师历年考点
  • 饰品企业网站建设推广网站排行榜
  • 郑州陆港开发建设有限公司网站wordpress主题邮件模板下载失败
  • 免费 网站上海建科建设监理网站
  • 网页设计与网站建设考试题北京造价信息网官网
  • 二手商品交易网站开发广西网络电视