簡體   English   中英

在java中捕獲memcache異常

[英]Catching memcache exception in java

我正在使用 spymemcached-2.8.4.jar 和 jdk.1.7。

這是我的代碼

try {

     MemcachedClient client = new MemcachedClient(...);

     client.set('name', 1000, 'some_name');

}catch(Exception ex){
     System.out.println("Exception occurred");
     System.out.println(ex.getMessage());
     ex.printStackTrace();

     logExceptionInDB(ex);
}

在我的掃描中,我的 memcached 機器沒有運行,所以它在控制台中打印以下異常,

java.net.ConnectException: Connection refused
    at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
    at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:735)
    at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:369)
    at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.java:242)
    at net.spy.memcached.MemcachedConnection.run(MemcachedConnection.java:836)

但我想抓住這個,除了把它寫在數據庫中。 如何捕捉這個異常?

帖子中提到的異常是抓不到的,因為spymemcached本身已經抓到了,只能看到日志, MemcachedConnection.java的相關代碼是:

catch (ConnectException var5) {
            this.getLogger().info("Reconnecting due to failure to connect to %s", new Object[]{node, var5});
            this.queueReconnect(node);
        }

之后它將嘗試重新連接,因此請確保您的配置正確。
實際上,您可以捕獲set方法產生的異常:

    OperationFuture<Boolean> future = client.set("name", 1000, "some_name");
    Boolean result = future.get(50, TimeUnit.MILLISECONDS);

假設您的一項操作的超時時間為 50 毫秒,您將在時間過去后得到CheckedOperationTimeoutException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM