Java与Clojure:异常处理、资源管理、类型提示及类定义
1. Java异常类型概述
Java标准库中有超过350种异常类型。在大多数情况下,这些异常类型中的一种在语义上足以描述当前的错误状况。大约90%的用例可以通过以下“核心”异常类型之一得到合理满足:
- java.lang.IllegalArgumentException
- java.lang.UnsupportedOperationException
- java.lang.IllegalStateException
- java.io.IOException
不过,也存在需要自定义异常类型的情况。
2. Clojure避开检查异常
Clojure运行在JVM上,但不继承Java的检查异常。Java方法可能声明抛出检查异常,Java编译器要求调用这些方法的代码要么捕获并处理这些异常,要么声明自己抛出这些异常。检查异常在Java生态系统中一直是个有争议的话题,普遍认为它会使Java代码更冗长、更难维护。
而Clojure不受从Clojure代码调用的Java方法声明抛出的检查异常的约束,因为检查异常是Java编译器的产物,在JVM运行时并不存在。例如,我们可以在不使用任何try/catch表达式的情况下,调用可能抛出 java.io.IOException 的方法来创建临时文件:
(File/createTempFile "clojureTempFile" ".txt")
与等效的J
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



