Fork me on GitHub
#ring-swagger
<
2018-02-05
>
petr.mensik10:02:45

I am wondering why the exception handling doesn't work correctly when it's thrown from a referenced library (JAR file). I have a route like this

(GET "/token" []
      :summary "Returns auth token"
      :current-user user
      (ok (ipex/get-token (:email user)))) ; throws exception
get-token looks like this
(try (:body (client/post (str (:url api-config) "/auth/token") (merge ipex-http-client-config
                                  {:form-params {:identityType "email"
                                                 :identityValue user-email}})))
       (catch Exception ex
         (ex-info "Problem connecting to the IPEX" {:cause :ipex-api} ex))))
When the exception is thrown, I can see following error in server log java.lang.IllegalArgumentException: No implementation of method: :write-body-to-stream of protocol: #'ring.core.protocols/StreamableResponseBody found for class: clojure.lang.ExceptionInfo Why its not handled via exception handlers in my api-config? It works for all other exceptions except this one particular case (I am hanndling exceptions with ex/default exception-handler)

karl10:02:16

@petr.mensik I think you need to throw the exception as well — ex-info only creates the exception, but doesn’t throw it.

petr.mensik10:02:45

@karl omg I am so stupid 🙂 You are right of course