et游戏自动翻译工具_ET的异常翻译
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
来转换IOException
, FooException
和BarException
。 IOException
将转换为MyRuntimeException
而FooException
和BarException
将转换为BazException
。
请注意,ET要求转换目标异常(此处为MyRuntimeException
和BazException
)为RuntimeExceptions
。
ExceptionTranslator
实例是线程安全的且不可变的。 只需配置一次ExceptionTranslator
,然后使其全局可用就可以了。
现在,我们可以使用新的ExceptionTranslator
包装可以引发我们要转换的异常的代码。
et.withTranslation(() -> {// can throw IOException, FooException and/or BarExceptionmyObject.dangerOperation();
});
如果现在dangerOperation()
et
引发IOException
,它将捕获它。 et
再抛出一个新MyRuntimeException
从抓IOException
。 原始IOException
存储在MyRuntimeException
的cause
字段中。
要使用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的异常翻译相关推荐
- Google自动翻译工具:对接谷歌翻译接口,实现本地化运行
Google自动翻译工具通过对接谷歌翻译api接口,实现Google翻译本地化运行,通过Google自动翻译工具我们可以对我们的txt/word/excl等多格式文本进行批量的翻译,并且会保留翻译格式 ...
- 【青少年编程】黄羽恒:翻译小工具 -- 利用有道翻译
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...
- tgp进游戏不显示服务器连接异常,TGP启用腾讯游戏提示“TCLS_CORE异常退出”的解决方法...
腾讯游戏平台(TGP)是我们最常用游戏助手,它不但为用户提供了游戏下载.安装.购买.更新.启动,而且为还具备了部分游戏特权.游戏礼包等等,因而成为了腾讯游戏爱好者必不可少的应用,而据部分win10用户 ...
- 《挂机游戏制作工具手册》挂机游戏制作工具基础知识
原文地址:http://orteil.dashnet.org/experiments/idlegamemaker/help 写在前面:对于挂机游戏的概念这里不作赘述和定义,本文翻译所指的是idle g ...
- Action Game Maker 游戏开发工具介绍
游戏开发者的论坛(66rpg):http://bbs.66rpg.com/forum-agm-1.html 在上面的论坛看一款游戏开发工具,使开发比较便利,主要能开发2d游戏(RPG,ARPG,RTG ...
- 游戏开发工具与Game Virtual Machine 设想
http://www.cppblog.com/sunicdavy/archive/2009/08/26/94482.html 游戏开发到现今,已经进入到一种固定模式与创意挣扎的阶段.Activisio ...
- 【转】部分游戏开发工具
2019独角兽企业重金招聘Python工程师标准>>> GPL许可证 GPL通用性公开许可证(General Public License,简称GPL).在字典中的含义 ...
- 部分游戏开发工具(转载)
GPL许可证 GPL通用性公开许可证(General Public License,简称GPL).在字典中的含义是非洲大羚羊,我们可以常常看到非常个性化的羊头,想必很多人已经非常熟悉.象征 GNU ...
- Porting Kit for mac(游戏移植工具)
一款Mac非常好用的游戏移植工具Porting Kit,Porting Kit旨在简化Mac计算机上Windows游戏的下载和安装过程.该实用程序使用Wineskin引擎,允许您浏览可部署到Mac的免 ...
最新文章
- 如何完成从研究型到工程型的转变
- 负margin的移位参考线
- linux——使用fidsk对linux硬盘进行操作【转】
- 【Python】一行python代码利用人工智能去除工作照背景
- 【.NET Core项目实战-统一认证平台】第一章 功能及架构分析
- TFS2017持续发布中调用PowerShell启停远程应用程序
- 论文浅尝 | 基于超平面的时间感知知识图谱嵌入
- opencv实现几幅图像拼接成一整幅大图
- 92.与上游服务建立连接
- win 7 连接打印机
- Java编程基础12——Eclipse使用Object类型
- 用C++编写的小游戏源代码
- SSH与SSM的区别
- 弗兰克赫兹大物实验数据处理
- 正激电路:半桥(波形解释)
- 3G终端变局:安卓崛起 联通高调摆脱苹果
- dos的几种打开方式
- Doris入门到精通-阶段一(简介安装使用)
- 离散数学——数学结构
- (转载)UIKIt力学教程