2024 Clojure状态调查中分享您的想法!

欢迎!请在关于页面了解有关此功能的一些更多信息。

+2
错误

Java 7及更高版本支持多catch异常(http://www.oracle.com/technetwork/articles/java/java7exceptions-486908.html)。如果Clojure也能支持它们,将非常方便,以避免在捕获异常后写出手动逻辑来检查异常类型,或者在不同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
...