activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Timothy Bish (JIRA)" <j...@apache.org>
Subject [jira] Resolved: (AMQCPP-218) CMSException is not getting caught by base class std::exception.
Date Thu, 05 Feb 2009 15:27:59 GMT

     [ https://issues.apache.org/activemq/browse/AMQCPP-218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Timothy Bish resolved AMQCPP-218.
---------------------------------

    Resolution: Fixed

Fixed in the Trunk code

> 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.1, 2.2.2
>         Environment: Windows XP, fuse-message-broker-5.2.0.1
>            Reporter: Ashok Panchal
>            Assignee: Timothy Bish
>             Fix For: 3.0
>
>
> 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.


Mime
View raw message