You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Timothy Bish (JIRA)" <ji...@apache.org> on 2009/02/05 16:27:59 UTC
[jira] Resolved: (AMQCPP-218) CMSException is not getting caught by
base class std::exception.
[ 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.