烟台做外贸网站建设,如何缩小wordpress文字边距,做网站公司599,卓进网站et游戏自动翻译工具前段时间#xff0c;我写了一篇有关用AspectJ进行异常转换的小博客文章。 在此博客文章中#xff0c;我们将看到如何使用ET及其更轻松的Java 8方法来实现相同的目的。 动机 异常转换#xff08;或异常转换#xff09;是将一种类型的异常转换为另一种类型… 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您只需向代码添加以下依赖项 dependencygroupIdcom.mscharhag/groupIdartifactIdet/artifactIdversion0.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.htmlet游戏自动翻译工具