2024 Clojure 调查问卷! 中分享您的想法。

欢迎!有关此工作方式的更多信息,请参阅 关于 页面。

+1
错误
重新标记

如果抛出一个包含不可打印 ex-data 的异常,调用 print-stack-trace 将会失败,因为 print-throwable 将抛出一个异常,这使得调试某些故障变得非常困难。

(defn print-throwable
  "Prints the class and message of a Throwable. Prints the ex-data map
  if present."
  {:added "1.1"}
  [^Throwable tr]
  (printf "%s: %s" (.getName (class tr)) (.getMessage tr))
  (when-let [info (ex-data tr)]
    (newline)
    (pr info)))

不可打印的 ex-data 可能包括实现多个接口并冲突 print-method 的第三方记录类型,但当没有预期使记录可打印。

(pr info) 包装在 (try .. (catch Throwable t 并打印类似 (str "<不可打印的 ex-data: " (ex-message t)">") 可能是一种合理的折衷方案,以允许更容易的调试。

1 答案

+1

选中
 
最佳答案
...