Я использую следующий код Clojure для обертывания .ping
из riak-java-client. Но я не люблю, это тупой ловлей исключение:Захват конкретного исключения из riak-java-client от Clojure
(ns myapp.riak
(:import [com.basho.riak.client IRiakClient]))
(set! *warn-on-reflection* true)
(defn alive?
"Is Riak client alive? Returns true or false, unlike `.ping`."
[^IRiakClient client]
(try
(.ping client) true
(catch Exception e false)))
Я попытался поймать их:
com.basho.riak.client.RiakException
java.net.ConnectException
java.io.IOException
Но ни один из них (отдельно или в комбинации).
Что я делаю неправильно?
3:56 pm EDT update: Я использую RiakFactory/httpClient
, в случае, если это имеет значение.
4:13 pm EDT update: Одним из интересных аспектов является процесс отладки. Во время отладки в REPL появился ConnectException
. Но RiakIORuntimeException
- часть решения ниже - не отображалась. Интересно, почему нет.