Clojure 2024 年度调查中分享您的想法!

欢迎!请在关于页面了解更多此平台的信息。

+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中,如果ExceptionB是从ExceptionA继承(直接或间接继承),则不能同时捕获ExceptionA 和 ExceptionB。编译器会报错:异常ExceptionB 已经被替代的异常ExceptionA捕获了。 - http://stackoverflow.com/a/3495968/826486
{quote}

我尝试搜索是否有类似的问题,但得到了大量的结果。但在前几页我没有看到有任何内容。

我遇到了一个使用这个特性的场景。如果不需要依赖库或宏,如slingshot的`try+`,这将是一件受欢迎的变化。

1 个回答

+1
...