在我的 clojure 脚本中,我有一个应该处理异常的 try/catch
datalayer (try (parse-dl line)
(catch Exception e []))
但是当我执行代码时出现异常:
Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected end-of-input: was expecting closing quote for a string value
我应该怎么做才能忽略这些异常
最佳答案
这只是一个猜测,因为我不知道 parse-dl 是做什么的,尽管有一个常见的模式会导致异常被抛出到预期的 try catch 之外。如果您从 try catch 中的一些惰性代码开始:
user> (def my-data [1 2 3])
#'user/my-data
user> (defn my-work [data]
(throw (Exception. "hi")))
#'user/my-work
user> (try
(map my-work my-data)
(catch Exception e []))
Exception hi user/my-work (form-init3735135586498578464.clj:1)
因为map返回一个惰性序列,实际计算发生在REPL打印结果时,因此在try catch block 返回后抛出异常。要修复惰性错误,请将 map 包装在对 doall
user> (try
(doall (map my-work my-data))
(catch Exception e []))
[]
当从 with-open
表达式返回惰性序列时,会发生另一个相关的惰性错误,因此在计算发生时,文件已经被 with-open 宏关闭。
关于exception - 使用 Clojure 处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24390148/