gpt4 book ai didi

java - 从 Clojure 中捕获来自 riak-java-client 的特定异常

转载 作者:行者123 更新时间:2023-11-30 09:20:14 25 4
gpt4 key购买 nike

我使用以下 Clojure 代码从 riak-java-client 包装 .ping .但我不喜欢在异常捕获方面如此直率:

(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 更新:我正在使用 RiakFactory/httpClient,以防万一。

美国东部时间下午 4:13 更新:一个有趣的方面是调试过程。调试时,ConnectException 出现在 REPL 中。但是 RiakIORuntimeException —— 下面的解决方案的一部分 —— 没有出现。我想知道为什么不。

最佳答案

ping 抛出 RiakException - https://github.com/basho/riak-java-client/blob/master/src/main/java/com/basho/riak/client/DefaultRiakClient.java#L210

下一个功能对我有用。我没有安装 riak,它返回 false

(ns riak.core
(:import [com.basho.riak.client IRiakClient RiakFactory RiakException]
[com.basho.riak.client.http.response RiakIORuntimeException]))

(set! *warn-on-reflection* true)
;; (def client (RiakFactory/pbcClient))
(def client (RiakFactory/httpClient))

(defn alive?
"Is Riak client alive? Returns true or false, unlike `.ping`."
[^IRiakClient client]
(try
(.ping client)
true
(catch RiakException e false)
(catch RiakIORuntimeException e false)))

回复:

riak.core> (alive? client)
false

更新:为 httpClient 添加了 RiakIORuntimeException 案例

关于java - 从 Clojure 中捕获来自 riak-java-client 的特定异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com