et游戏自动翻译工具

前段时间,我写了一篇有关用AspectJ进行异常转换的小博客文章。 在此博客文章中,我们将看到如何使用ET及其更轻松的Java 8方法来实现相同的目的。

动机

异常转换(或异常转换)是将一种类型的异常转换为另一种类型的过程。

转换异常的Java代码非常简单,我认为每个Java开发人员都会不时编写如下代码:

try {// code that can throw FooException
} catch(FooException e) {// convert FooException to BarExceptionthrow new BarException(e);
}

如果第三方库中的异常不适合您的应用程序,则通常会应用异常转换。 其原因可能是:

  • 库引发的异常级别太低和/或您不想将实现细节泄漏到应用程序的其他部分。 例如,您要使用更通用的DataAccessException而不是较低级别SQLException。
  • 库正在使用检查的异常,而您更喜欢在应用程序中仅使用运行时异常。

ET的异常翻译

ET是一个小型且简单的异常翻译库。 要开始使用ET,您只需向代码添加以下依赖项:

<dependency><groupId>com.mscharhag</groupId><artifactId>et</artifactId><version>0.2.0</version>
</dependency>

ET利用Java 8功能,因此不要忘记将编译器级别设置为Java 8。

我们从配置ExceptionTranslator实例开始:

ExceptionTranslator et = ET.newConfiguration().translate(IOException.class).to(MyRuntimeException.class)        .translate(FooException.class, BarException.class).to(BazException.class).done()

在这里,我们创建一个ExceptionTranslator来转换IOExceptionFooExceptionBarExceptionIOException将转换为MyRuntimeExceptionFooExceptionBarException将转换为BazException

请注意,ET要求转换目标异常(此处为MyRuntimeExceptionBazException )为RuntimeExceptions

ExceptionTranslator实例是线程安全的且不可变的。 只需配置一次ExceptionTranslator ,然后使其全局可用就可以了。

现在,我们可以使用新的ExceptionTranslator包装可以引发我们要转换的异常的代码。

et.withTranslation(() -> {// can throw IOException, FooException and/or BarExceptionmyObject.dangerOperation();
});

如果现在dangerOperation() et引发IOException ,它将捕获它。 et再抛出一个新MyRuntimeException从抓IOException 。 原始IOException存储在MyRuntimeExceptioncause字段中。

要使用withReturningTranslation()从转换块返回值,可以使用:

MyResultClass data = et.withReturningTranslation(() -> {...return myObject.dangerOperation();
});

摘要

如果您必须在代码中执行大量异常转换,那么ET是一个小型库,可能对您有用。 一次配置转换规则后,只需将代码包装在lambda表达式中即可转换异常。

查看GitHub上的完整ET文档 。

翻译自: https://www.javacodegeeks.com/2015/06/exception-translation-with-et.html

et游戏自动翻译工具

et游戏自动翻译工具_ET的异常翻译相关推荐

  1. Google自动翻译工具:对接谷歌翻译接口,实现本地化运行

    Google自动翻译工具通过对接谷歌翻译api接口,实现Google翻译本地化运行,通过Google自动翻译工具我们可以对我们的txt/word/excl等多格式文本进行批量的翻译,并且会保留翻译格式 ...

  2. 【青少年编程】黄羽恒:翻译小工具 -- 利用有道翻译

    「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...

  3. tgp进游戏不显示服务器连接异常,TGP启用腾讯游戏提示“TCLS_CORE异常退出”的解决方法...

    腾讯游戏平台(TGP)是我们最常用游戏助手,它不但为用户提供了游戏下载.安装.购买.更新.启动,而且为还具备了部分游戏特权.游戏礼包等等,因而成为了腾讯游戏爱好者必不可少的应用,而据部分win10用户 ...

  4. 《挂机游戏制作工具手册》挂机游戏制作工具基础知识

    原文地址:http://orteil.dashnet.org/experiments/idlegamemaker/help 写在前面:对于挂机游戏的概念这里不作赘述和定义,本文翻译所指的是idle g ...

  5. Action Game Maker 游戏开发工具介绍

    游戏开发者的论坛(66rpg):http://bbs.66rpg.com/forum-agm-1.html 在上面的论坛看一款游戏开发工具,使开发比较便利,主要能开发2d游戏(RPG,ARPG,RTG ...

  6. 游戏开发工具与Game Virtual Machine 设想

    http://www.cppblog.com/sunicdavy/archive/2009/08/26/94482.html 游戏开发到现今,已经进入到一种固定模式与创意挣扎的阶段.Activisio ...

  7. 【转】部分游戏开发工具

    2019独角兽企业重金招聘Python工程师标准>>> GPL许可证        GPL通用性公开许可证(General Public License,简称GPL).在字典中的含义 ...

  8. 部分游戏开发工具(转载)

      GPL许可证 GPL通用性公开许可证(General Public License,简称GPL).在字典中的含义是非洲大羚羊,我们可以常常看到非常个性化的羊头,想必很多人已经非常熟悉.象征 GNU ...

  9. Porting Kit for mac(游戏移植工具)

    一款Mac非常好用的游戏移植工具Porting Kit,Porting Kit旨在简化Mac计算机上Windows游戏的下载和安装过程.该实用程序使用Wineskin引擎,允许您浏览可部署到Mac的免 ...

最新文章

  1. 如何完成从研究型到工程型的转变
  2. 负margin的移位参考线
  3. linux——使用fidsk对linux硬盘进行操作【转】
  4. 【Python】一行python代码利用人工智能去除工作照背景
  5. 【.NET Core项目实战-统一认证平台】第一章 功能及架构分析
  6. TFS2017持续发布中调用PowerShell启停远程应用程序
  7. 论文浅尝 | 基于超平面的时间感知知识图谱嵌入
  8. opencv实现几幅图像拼接成一整幅大图
  9. 92.与上游服务建立连接
  10. win 7 连接打印机
  11. Java编程基础12——Eclipse使用Object类型
  12. 用C++编写的小游戏源代码
  13. SSH与SSM的区别
  14. 弗兰克赫兹大物实验数据处理
  15. 正激电路:半桥(波形解释)
  16. 3G终端变局:安卓崛起 联通高调摆脱苹果
  17. dos的几种打开方式
  18. Doris入门到精通-阶段一(简介安装使用)
  19. 离散数学——数学结构
  20. (转载)UIKIt力学教程

热门文章

  1. 互联网的女性主义特征(转载)
  2. 机器学习——LR(线性回归)、LRC(线性回归分类)与人脸识别
  3. sql sever使用
  4. intouch实时报警
  5. goLang 如何开发 windows 窗口界面
  6. 爬虫实战之爬虫漫画(有意外发现哦~嘿嘿)
  7. 我的校招——南京烽火笔试+格力初面
  8. 华能集团牵手阿里云 打造“互联物+”阳光采购样板工程
  9. uni-app用uni.chooseImage API调用相机或从相册中选择图片
  10. C#为窗体控件设置透明色问题