[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