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

欢迎!有关如何使用本网站的更多信息,请参阅关于页面。

0
错误

clojure.lang.ExceptionInfo的两个参数构造函数将链接到三个参数版本,传递null作为原因。然后三参数构造函数调用具有null原因的super,上述行是注释“null原因等效于未传递原因”。

这实际上并不正确,因为在这里传递null意味着原因已被初始化,无论其值如何。因此,您无法在之后的ex-info异常上调用.initCause。在我的情况下,'cause'在抛出时是未知的:异常被向上捕获,添加原因,然后重新抛出。

总之,这个表达式将始终抛出一个异常:(-> (ex-info "ex" {}) (.initCause (Exception. "cause")))。

简单解决方法是对两个参数的super进行调用,并在原因非null的情况下调用.initCause。

感谢道,

Mat。

1 个答案

0
...