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

欢迎!请参阅关于页面以了解有关如何使用本站的一些更多信息。

0
Clojure

如果我向代理的set-error-handler传递一个包含start-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报告)
...