Clojure没有捕获NumberFormatException

Ral*_*lph 5 clojure numberformatexception

在下面的代码中,Clojure(1.2)正在打印错误的消息:

(try
  (let [value "1,a"]
    (map #(Integer/parseInt %) (.split value ",")))
  (catch NumberFormatException _ (println "illegal argument")))
Run Code Online (Sandbox Code Playgroud)

这应该打印"非法参数",而是打印出来(1#<NumberFormatException java.lang.NumberFormatException: For input string: "a">.

我究竟做错了什么?

这是因为返回的懒惰序列map?怎么写?

小智 10

try特殊形式仅捕捉被的主体代码的动态范围内时期间产生的异常.这里map返回一个惰性序列,然后传递出try特殊形式并返回.然后打印机评估序列,并在此时抛出异常.

包装mapdoall应该可以解决您的问题.