2024 Clojure 状态调查 中分享您的想法!

欢迎!请查看 关于 页面以获取更多工作原理的信息。

0
Clojure

如果我将包含 start-agent 的函数传递给一个代理的 set-error-handler,如果发生异常,则会忽略 restart-agent。
例如

(def a (agent 0))

(set-error-handler! a (fn (link: the-agent the-exception) (restart-agent the-agent)) )

现在如果我发出 : (send! a #(/ 1 0)),我仍然有一个失败的代理。它没有重启。

我知道我可以通过将错误模式设置为代理的 :continue 来在崩溃后使代理保持运行,但我希望可以通过修复首先导致异常的条件,然后在 set-error-handler 中程序化地重启代理。

这可能是一种已知的行为,但没有进行文档记录?

1 答案

0
参考: https://clojure.atlassian.net/browse/CLJ-1428(由 turbopape 报告)
...