If an exception is thrown that contains unprintable
print-stack-trace will fail because
print-throwable will throw an exception, making it very hard to debug certain failures.
"Prints the class and message of a Throwable. Prints the ex-data map
(printf "%s: %s" (.getName (class tr)) (.getMessage tr))
(when-let [info (ex-data tr)]
ex-data could include a third-party record type that implements multiple interfaces that conflict for
print-method but did not anticipate making the record printable.
(pr info) in
(catch Throwable t and printing something like
(str "<unprintable ex-data: " (ex-message t)">)" might be a reasonable compromise here to allow for easier debugging.