exception - 使用 Clojure 处理异常

标签 exception clojure apache-pig

在我的 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/

相关文章:

android - 是否可以通过 Android Studio 安装 Cursive 插件?

scala - Scala Transducers 和 Clojure Transducers 有什么异同?

c# - 内部安全检查,如何做到100%的代码覆盖率?

android - 从 Thread.UncaughtExceptionHandler 启动服务?

java - 删除运行时生成的 XSL 输出文件

javascript - Protractor - StaleElementReferenceException 偶尔发生

clojure - 如何在Kotlin中无限循环地懒惰地循环列表?

hadoop - pig 拉丁文的汇总信息和预测

java - Hbase和PIG不会存储所有行

hadoop - Hadoop pig 。不断变化的结构