如果我向代理的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中以编程方式重新启动代理。
这可能是已知的行为,但它没有在文档中说明?