2024 Clojure状态调查!分享你的想法。

欢迎!请查看关于页面了解更多关于这是如何工作的信息。

+2 投票
错误

Java 7及以上版本支持多catch异常(http://www.oracle.com/technetwork/articles/java/java7exceptions-486908.html)。如果Clojure也支持它们,将非常有用,以防止捕获像Exception这样的异常,然后手动编写逻辑来检查异常类型,或者在多个catch块中重复逻辑。

这种可能的语法可以是

`
(try (fn-that-throws)

 (catch (UnknownHostException NoRouteToHostException) e
   (go-offline)))

`

此技术的先例是 * } 宏:https://gist.github.com/Gonzih/5814945

要处理的一个细微差别是

{quote}
编辑:请注意,在Java 7中,如果你同时捕获ExceptionA和ExceptionB,而ExceptionB是ExceptionA的继承(直接或间接),编译器将会报错:异常ExceptionB已被替代异常ExceptionA捕获。请参阅http://stackoverflow.com/a/3495968/826486
{quote}

我试图搜索是否有人提出过这个问题,但得到了大量的结果。但我在前几页没有看到任何内容。

我遇到了使用这个的场景。这是一个受欢迎的变化,不需要依赖于slingshot的`try+`之类的库或宏。

1 答案

+1 投票
参考:[https://clojure.atlassian.net/browse/CLJ-2124](https://clojure.atlassian.net/browse/CLJ-2124)(由[email protected] 报告)
...