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特殊形式并返回.然后打印机评估序列,并在此时抛出异常.
包装map中doall应该可以解决您的问题.