2024 Clojure 状态调查!分享你的想法。

欢迎!请查看关于页面了解更多关于其工作原理的信息。

+1 投票
core.async

当一个转换器应用于通道并且在转换过程中发生异常时,ex-handler将以
Throwable作为参数被调用。

我们是否也可以将导致转换异常的值发送给ex-handler?在与转换器错误处理中,拥有全面情况可能是有用的。

如果这可行,并且解决方案是ex-handler的第二参数,该参数接收val和throwable,并且应用调用是

clojure.core.async.impl.channels变为

`
(defn chan

  ...
         (try
           (add! buf val)
           (catch Throwable t
             (handle buf exh t val)))))))))

`

3 答案

0 投票

评论由:nid90发表

在代码中使用core.async/pipeline时发现了同样的需求。我编写了一个类似补丁(演示性的)允许你将val放入exh。如果这看起来不错,我很乐意编写一个完整的补丁。

0 投票

评论由:d-t-w发表

也许可以将ex-handler保持不变,但传递一个而不是简单地传递捕获的Throwable的ex-info。异常中提供由ex-info映射提供的值,Throwable作为原因。

0 投票
参考:https://clojure.atlassian.net/browse/ASYNC-114(由 alex+import 报告)
...