error-handling - Clojure 中的 Stacktrace 和错误单子(monad)

标签 error-handling clojure monads stack-trace

我不确定 error handling with monads被认为是 Clojure 的最佳实践,但它似乎很受欢迎(但是,我仍然看到很多异常(exception))。 Monads 似乎是更实用的错误处理方法。但是,我在使用错误单子(monad)时缺少堆栈跟踪。有没有办法在使用 monads 时获取堆栈跟踪?或者这里有什么替代方案?

最佳答案

正如 muhuk 所说,您将使用 monad 来避免获取堆栈跟踪。

回复another SO recently时发现的一篇文章与您链接的那个相关的是http://overwatering.org/blog/2013/12/clojures-thread-for-monads

它构建了一个 m-> threading monad,并给出了使用它产生 fail-> 的示例monad 基于 error monads 文章中的工作。它允许您在执行期间有效地返回不同的错误类型。

关于error-handling - Clojure 中的 Stacktrace 和错误单子(monad),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30820413/

相关文章:

objective-c - 在 Objective-C 中维护表示不变量

vb6 - InvokeMember 单击 VB6 时出现运行时错误 438

clojure - 为什么 Clojure 有 5 种定义类的方法而不是只有一种?

macros - Clojure 报价与数字

scala - 如何在Scala中设计一个简单的监控库?

c++ - 指针未指向 NULL 时发生访问冲突

node.js - Expressjs - 使用中间件处理错误

clojure - 这种连续传递风格的 Clojure 函数生成器是如何工作的?

haskell - liftM 函数是否被剥夺了它们的一元本质?

haskell - 简单 Haskell Monad - 随机数