Pelops - ошибка соединения с перехватом?

Есть ли способ отловить ошибку подключения при использовании pelops в Java? У меня есть следующий код, но по какой-то причине я не дохожу до своего блока catch.

public static Boolean testDBConnection() throws PelopsException {
    try{
        Cluster cluster = new Cluster("127.0.0.1", 9160);

        Pelops.addPool(pool, cluster, keyspace);

        Pelops.shutdown();

        return true;
    }
    catch(PelopsException e)
    {
        System.out.println("SOMETHING WENT WRONG!");
        System.out.println(e.getMessage());
        return false;
    }
}

Возможно, это что-то действительно простое, но я не могу заставить его работать. Я вижу исключения, но я никак не могу это уловить? Может ли кто-нибудь, пожалуйста, привести меня в правильном направлении?

Спасибо!

РЕДАКТИРОВАТЬ - Исключение возвращается в консоли Eclipse...

15:47:33.545 [main] DEBUG o.s.c.pelops.pool.CommonsBackedPool - Made new connection 'Connection[Testing][127.0.0.1:9160][724408050]'
15:47:34.545 [main] ERROR o.scale7.cassandra.pelops.Connection - Failed to open transport.  See cause for details...
org.apache.thrift.transport.TTransportException: java.net.ConnectException: Connection refused: connect
    at org.apache.thrift.transport.TSocket.open(TSocket.java:185) ~[libthrift-0.5.0.jar:na]
    at org.apache.thrift.transport.TFramedTransport.open(TFramedTransport.java:81) ~[libthrift-0.5.0.jar:na]
    at org.scale7.cassandra.pelops.Connection.open(Connection.java:70) ~[scale7-pelops-0.913.jar:na]
    at org.scale7.cassandra.pelops.pool.CommonsBackedPool$ConnectionFactory.makeObject(CommonsBackedPool.java:785) [scale7-pelops-0.913.jar:na]
    at org.apache.commons.pool.impl.GenericKeyedObjectPool.addObject(GenericKeyedObjectPool.java:1685) [commons-pool-1.5.5.jar:1.5.5]
    at org.apache.commons.pool.impl.GenericKeyedObjectPool.ensureMinIdle(GenericKeyedObjectPool.java:2058) [commons-pool-1.5.5.jar:1.5.5]
    at org.apache.commons.pool.impl.GenericKeyedObjectPool.preparePool(GenericKeyedObjectPool.java:1722) [commons-pool-1.5.5.jar:1.5.5]
    at org.scale7.cassandra.pelops.pool.CommonsBackedPool.addNode(CommonsBackedPool.java:373) [scale7-pelops-0.913.jar:na]
    at org.scale7.cassandra.pelops.pool.CommonsBackedPool.<init>(CommonsBackedPool.java:104) [scale7-pelops-0.913.jar:na]
    at org.scale7.cassandra.pelops.pool.CommonsBackedPool.<init>(CommonsBackedPool.java:64) [scale7-pelops-0.913.jar:na]
    at org.scale7.cassandra.pelops.pool.CommonsBackedPool.<init>(CommonsBackedPool.java:52) [scale7-pelops-0.913.jar:na]
    at org.scale7.cassandra.pelops.Pelops.addPool(Pelops.java:25) [scale7-pelops-0.913.jar:na]
    at libraries.cassandra.testDBConnection(cassandra.java:192) [classes/:na]
    at libraries.cassandra.main(cassandra.java:38) [classes/:na]
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.6.0_25]
    at java.net.PlainSocketImpl.doConnect(Unknown Source) ~[na:1.6.0_25]
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source) ~[na:1.6.0_25]
    at java.net.PlainSocketImpl.connect(Unknown Source) ~[na:1.6.0_25]
    at java.net.SocksSocketImpl.connect(Unknown Source) ~[na:1.6.0_25]
    at java.net.Socket.connect(Unknown Source) ~[na:1.6.0_25]
    at org.apache.thrift.transport.TSocket.open(TSocket.java:180) ~[libthrift-0.5.0.jar:na]
    ... 13 common frames omitted

2 ответа

Решение

Возбуждаемое исключение org.apache.thrift.TTransportException - это проверенное исключение, которое не перехватывается и не переносится в PelopsException, который расширяет RuntimeException.

Если вы хотите, чтобы ваш метод всегда возвращал PelopsException, вы должны catch(Exception e) и затем добавьте новое PelopsException(e.getMessage()) в ваш блок catch.

   catch(Exception e)
{
    System.out.println("SOMETHING WENT WRONG!");
    System.out.println(e.getMessage());
    throw new PelopsException(e.getMessage());
}

Это может быть выбрасывание непроверенного исключения или Ошибка (которая не является Исключением).

Попробуйте изменить код на catch (Throwable e) и посмотрим, что вы получите.

Другие вопросы по тегам