在clojure脚本中,我有一个try/catch可以处理异常
datalayer (try (parse-dl line) (catch Exception e []))
但是当我执行我的代码时,我有一个例外:原因:com.fasterxml.jackson.core.jsonparseexception:输入意外结束:字符串值应为右引号我该怎么做才能忽略这些例外
gv8xihay1#
这只是一个猜测,因为我不知道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块返回后抛出异常。要修复懒惰的bug,请在调用 doall ```user> (try(doall (map my-work my-data))(catch Exception e []))[]
doall
另一个相关的延迟bug发生在从 `with-open` 表达式,以便在进行计算时,with open宏已关闭文件。
1条答案
按热度按时间gv8xihay1#
这只是一个猜测,因为我不知道parse dl是做什么的,尽管有一个常见的模式会导致异常被抛出try catch之外的预期位置。如果您在try-catch中从一些惰性代码开始:
因为map返回一个延迟序列,实际计算发生在repl打印结果时,所以在try catch块返回后抛出异常。要修复懒惰的bug,请在调用
doall
```user> (try
(doall (map my-work my-data))
(catch Exception e []))
[]