summaryrefslogtreecommitdiff
path: root/cpp/src/qpid/store/ms-sql/Exception.h
diff options
context:
space:
mode:
authorStephen D. Huston <shuston@apache.org>2009-10-28 23:47:03 +0000
committerStephen D. Huston <shuston@apache.org>2009-10-28 23:47:03 +0000
commite70a7bb7fbed5533690fa0fcea1e157867b2b1fa (patch)
tree7daf6f6a7aff694d937ca83a2bc690303b9badfb /cpp/src/qpid/store/ms-sql/Exception.h
parent891493f277f6a2895399a955a56bac8f4ef1379a (diff)
downloadqpid-python-e70a7bb7fbed5533690fa0fcea1e157867b2b1fa.tar.gz
Change StorageProvider::Exception to inherit from qpid::Exception instead of std::exception; allows the broker to catch them and do something other than die without a message.
Fixed exception handling around more ADO ops and correctly handle com exceptions without associated ErrorInfo. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@830797 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/store/ms-sql/Exception.h')
-rw-r--r--cpp/src/qpid/store/ms-sql/Exception.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/cpp/src/qpid/store/ms-sql/Exception.h b/cpp/src/qpid/store/ms-sql/Exception.h
index 34e401b068..84b7f62739 100644
--- a/cpp/src/qpid/store/ms-sql/Exception.h
+++ b/cpp/src/qpid/store/ms-sql/Exception.h
@@ -46,8 +46,15 @@ public:
ADOException(const std::string& _text, _com_error &e)
: Exception(_text) {
text += ": ";
- _bstr_t wmsg = e.Description();
- text += (const char *)wmsg;
+ IErrorInfo *i = e.ErrorInfo();
+ if (i != 0) {
+ _bstr_t wmsg = e.Description();
+ text += (const char *)wmsg;
+ i->Release();
+ }
+ else {
+ text += e.ErrorMessage();
+ }
}
};