在java中捕获memcache异常

在java中捕获memcache异常,java,memcached,spymemcached,Java,Memcached,Spymemcached,我正在使用spymecached-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.get

我正在使用spymecached-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)

但我想抓住这个例外,把它写到数据库中。如何捕获此异常?

您无法捕获帖子中提到的异常,因为它已经被SpymeCached本身捕获,您只能看到日志,
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);
OperationFuture=client.set(“name”,1000,“some_name”);
布尔结果=future.get(50,TimeUnit.ms);

假设一个操作的超时时间为50毫秒,则在经过该时间后,您将获得
CheckedOperationTimeoutException

您正在捕获异常。。。按你想要的方式处理它。你的控制台是否打印“异常发生”??如果是这样,那么您已经捕获到异常,请使用JDBC连接器连接到DB并持久化错误消息(例如getMessage())。不,实际上它是一个异步调用,使用FutureTask实现。在被调用的线程内部,它正在打印异常,没有抛出任何内容。