欢迎!请在关于页面了解有关此功能的一些更多信息。
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}
我试图搜索是否有相关提问,但得到了大量的结果。但在前几页我并没有看到任何相关内容。