如果我使用 Slingshot 的try+
and catch
,很容易编写一个选择器来匹配地图的内容:
(defn dosomething (throw+ {:some :data}))
(try+ (dosomething)
(catch [:some :data] ;; recover))
但是,如果我想使用ex-info
,则 catch 选择器与 的数据不匹配ExceptionInfo
:
(defn dosomething (throw (ex-info "A message" {:some :data})))
显然,我可以捕获ExceptionInfo
或编写自定义谓词来匹配数据,我只是想知道我是否遗漏了有关 Slingshot 或的东西ex-info
,因为我被引导相信它们比这更顺利地协同工作。