[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] Created: (AMQCPP-218) CMSException is not getting caught by
From:       "Ashok Panchal (JIRA)" <jira () apache ! org>
Date:       2008-12-30 6:38:05
Message-ID: 1253727775.1230619085502.JavaMail.jira () brutus
[Download RAW message or body]

CMSException is not getting caught by base class std::exception.
----------------------------------------------------------------

                 Key: AMQCPP-218
                 URL: https://issues.apache.org/activemq/browse/AMQCPP-218
             Project: ActiveMQ C++ Client
          Issue Type: Bug
    Affects Versions: 2.2.2, 2.2.1
         Environment: Windows XP, fuse-message-broker-5.2.0.1
            Reporter: Ashok Panchal
            Assignee: Timothy Bish


I am upgrading CPP libary 2.1.1 to AMQCPP 2.2.2, and using \
fuse-message-broker-5.2.0.1. 

My application is in C++ so it uses std::exception handler as generic. But with \
AMQCPP 2.2.2 and 2.2.1, these handlers are not getting called though cms:CMSException \
handlers get called. 

I tested it using test application in AMQCPP library <vs2005-activemq-example>. Here \
is consumer's run method from example. Put your broker down, so you will get \
exception at CreateConnection(). 

Ex: 
 virtual void run() { 

        try { 

            // Create a ConnectionFactory 
            auto_ptr<ConnectionFactory> connectionFactory( 
                ConnectionFactory::createCMSConnectionFactory( brokerURI ) ); 

            // Create a Connection 
            connection = connectionFactory->createConnection(); 
            connection->start(); 
            connection->setExceptionListener(this); 

            // Create a Session 
            if( this->sessionTransacted == true ) { 
                session = connection->createSession( Session::SESSION_TRANSACTED ); 
            } else { 
                session = connection->createSession( Session::AUTO_ACKNOWLEDGE ); 
            } 

            // Create the destination (Topic or Queue) 
            if( useTopic ) { 
                destination = session->createTopic( "TEST.FOO" ); 
            } else { 
                destination = session->createQueue( "TEST.FOO" ); 
            } 

            // Create a MessageConsumer from the Session to the Topic or Queue 
            consumer = session->createConsumer( destination ); 

            consumer->setMessageListener( this ); 

            std::cout.flush(); 
            std::cerr.flush(); 

            // Indicate we are ready for messages. 
            latch.countDown(); 

            // Wait while asynchronous messages come in. 
            doneLatch.await( waitMillis ); 

                } catch (std::exception& e) {
                      //e.printStackTrace(); 
                        printf(e.what()); 
                        printf( "Std Exception at Consumer:"); 
                }catch(cms::CMSException& e) {

            // Indicate we are ready for messages. 
            latch.countDown(); 
          printf("cms Exception occurred. Consumer.\n"); 

            e.printStackTrace(); 
                } 
    } 

I am getting warning for this as expected in build: 
warning C4286: 'cms::CMSException &' : is caught by base class ('std::exception &') \
on line 127 

But the std::exception handler is not getting called though CMSException handler \
excuted. As a base class  I believe that std:exception should get called. This is \
working fine using 2.1.1 library, but not 2.2.1/2.2.2. 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic