Slingshot のtry+
andを使用するcatch
と、マップの内容に一致するセレクターを簡単に作成できます。
(defn dosomething (throw+ {:some :data}))
(try+ (dosomething)
(catch [:some :data] ;; recover))
ただし、 を使用したい場合、そのキャッチ セレクターはのデータex-info
と一致しません。ExceptionInfo
(defn dosomething (throw (ex-info "A message" {:some :data})))
明らかにExceptionInfo
、データに一致するカスタム述語をキャッチしたり、記述したりできます。Slingshot または について何かが欠けているのではないかex-info
と思っていました。