宣布SneakyThrow:一个Java库忽略已检查的异常
您是否厌倦了为Java的Checked Exception编写“ catch-pseudo-code”? 而且,我们不要考虑烦人的附加单元测试。
正在提供帮助。
让我向您介绍SneakyThrow。 借助此Java库,减少了捕获“检查的异常”所需编写的代码量。
它仅使用“合法的东西”,没有像字节码操作这样的魔术。 我在看你龙目岛项目????
SneakyThrows将异常包装到RuntimeException中。 众所周知:我们不必捕获这些类型的异常。 我们可以将它们保留为未经检查的异常。
我怎么才能得到它?
只需将库作为依赖项复制并粘贴到pom.xml
或选择的类似依赖项管理器中:
<dependency>
<groupId>com.rainerhahnekamp</groupId
<artifactId>sneakythrow</artifactId>
<version>1.0.0</version>
</dependency>
如何使用?
如果没有SneakyThrow,则具有Checked Exception的代码如下所示:
URL url;
try {
url = new URL("https://www.hahnekamp.com");
} catch (MalformedURLException mue) {
throw new RuntimeException(mue);
}
感谢SneakyThrow,您的代码如下所示:
URL url = sneak(() -> new URL("https://www.hahnekamp.com"));
大! 它也适用于Stream和lambdas吗?
当然可以 再次没有SneakyThrow的代码:
private URL createURL(String url) throws MalformedURLException {
return new URL(url);
}
Stream
.of("https://www.hahnekamp.com", "https://www.austria.info")
.map(url -> {
try {
return this.createURL(url);
} catch (MalformedURLException mue) {
throw new RuntimeException(mue);
}
})
.collect(Collectors.toList());
现在再用SneakyThrow减少代码:
private URL createURL(String url) throws MalformedURLException {
return new URL(url);
}
Stream
.of("https://www.hahnekamp.com", "https://www.austria.info")
.map(sneaked(this::createURL))
.collect(Collectors.toList());
请注意, 偷偷 窜至的差异。
在哪里可以获得更多信息?
文章“忽略Java中的异常”更详细地描述了SneakyThrow的原理和基本方法。
SneakyThrow是开源的,可在GitHub上获得 。
尝试一下,让我听听它的运行情况。 欢迎任何形式的反馈。
最初于 2018年3月26日 发布在 www.rainerhahnekamp.com 上。
From: https://hackernoon.com/announcing-sneakythrow-8b41b07f9201