次の Clojure コードを使用して.ping、riak-java-clientからラップします。しかし、私は例外をキャッチすることでこの率直になるのは好きではありません:
(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.RiakExceptionjava.net.ConnectExceptionjava.io.IOException
しかし、これらのどれも (単独または組み合わせて) 機能しませんでした。
私は何を間違っていますか?
午後 3:56 EDT 更新:RiakFactory/httpClient重要な場合に備えて を使用しています。
午後 4 時 13 分 EDT 更新: 興味深い側面の 1 つは、デバッグ プロセスです。デバッグ中ConnectExceptionに、REPL に表示されました。しかしRiakIORuntimeException-- 以下のソリューションの一部 -- は表示されませんでした。なぜだろう。