我有一些看起来像这样的代码(d为歧管):
(if throw-first-error
(throw
(d/error!
(ex-info "Error"
{:cause "first error"})))
(-> (do-things-that-could-cause-error)
(d/catch' (fn [e] (throw
(ex-info "Error"
{:cause "second error"})))))))
第二个错误被推迟了,这就是我想要的,因为它在d/catch'
中。我也要如何推迟第一个错误,因此它可以被与第二个错误相同的d/catch'
调用此代码的函数捕获。谢谢!
答案 0 :(得分:1)
想通了! d/error-deferred
代替了标准的throw
解决了这个问题。