欢迎!请查看关于页面了解更多关于这是如何工作的信息。
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}
我试图搜索是否有人提出过这个问题,但得到了大量的结果。但我在前几页没有看到任何内容。