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 "<unprintable ex-data: " (ex-message t)">)" 可能是一个合理的折衷方案,从而使调试更加容易。

1 答案

+1

选中
...