Thanks Tim. I created Jira issue for this - https://issues.apache.org/activemq/browse/AMQCPP-218.
//Ashok Timothy Bish wrote: > > Please feel free to create a Jira issue to document the potential bug > you have uncovered. This will ensure that it doesn't get lost and that > someone will eventually take a look at it. > > Regards > Tim. > > On Fri, 2008-12-26 at 23:00 -0800, Ashok P wrote: >> 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. >> >> I might be wrong, please correct me and help me sort out this problem. >> >> > -- > Tim Bish > http://fusesource.com > http://timbish.blogspot.com/ > > > > > -- View this message in context: http://www.nabble.com/AMQCPP---CMSException-is-not-getting-caught-by-base-class-std%3A%3Aexception.-tp21182080p21213692.html Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.