summaryrefslogtreecommitdiff
path: root/python/qpid/messaging/exceptions.py
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2010-04-13 11:21:38 +0000
committerRafael H. Schloming <rhs@apache.org>2010-04-13 11:21:38 +0000
commit118c4bb7fa781bbb4512a66ba1ca618e70abe64b (patch)
tree7b61c7420cd0736ecdb5b5c05d04b3488a3476cf /python/qpid/messaging/exceptions.py
parent96367205ad9e9a1d24069845683a59e5f36c9683 (diff)
downloadqpid-python-118c4bb7fa781bbb4512a66ba1ca618e70abe64b.tar.gz
added more complete exception handling/hierarchy
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@933560 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python/qpid/messaging/exceptions.py')
-rw-r--r--python/qpid/messaging/exceptions.py86
1 files changed, 79 insertions, 7 deletions
diff --git a/python/qpid/messaging/exceptions.py b/python/qpid/messaging/exceptions.py
index 10ad529806..0a4941a40f 100644
--- a/python/qpid/messaging/exceptions.py
+++ b/python/qpid/messaging/exceptions.py
@@ -17,7 +17,26 @@
# under the License.
#
-class ConnectionError(Exception):
+class MessagingError(Exception):
+
+ def __init__(self, code=None, text=None, **info):
+ self.code = code
+ self.text = text
+ self.info = info
+ if self.code is None:
+ msg = self.text
+ else:
+ msg = "%s(%s)" % (self.text, self.code)
+ if info:
+ msg += " " + ", ".join(["%s=%r" % (k, v) for k, v in self.info.items()])
+ Exception.__init__(self, msg)
+
+class InternalError(MessagingError):
+ pass
+
+## Connection Errors
+
+class ConnectionError(MessagingError):
"""
The base class for all connection related exceptions.
"""
@@ -30,7 +49,15 @@ class ConnectError(ConnectionError):
"""
pass
-class SessionError(Exception):
+class VersionError(ConnectError):
+ pass
+
+class AuthenticationFailure(ConnectError):
+ pass
+
+## Session Errors
+
+class SessionError(MessagingError):
pass
class Detached(SessionError):
@@ -47,19 +74,64 @@ class NontransactionalSession(SessionError):
"""
pass
-class TransactionAborted(SessionError):
+class TransactionError(SessionError):
pass
-class SendError(SessionError):
+class TransactionAborted(TransactionError):
pass
-class InsufficientCapacity(SendError):
+class UnauthorizedAccess(SessionError):
+ pass
+
+class ServerError(SessionError):
+ pass
+
+## Link Errors
+
+class LinkError(MessagingError):
+ pass
+
+class InsufficientCapacity(LinkError):
+ pass
+
+class AddressError(LinkError):
+ pass
+
+class MalformedAddress(AddressError):
+ pass
+
+class InvalidOption(AddressError):
+ pass
+
+class ResolutionError(AddressError):
+ pass
+
+class AssertionFailed(ResolutionError):
+ pass
+
+class NotFound(ResolutionError):
+ pass
+
+## Sender Errors
+
+class SenderError(LinkError):
+ pass
+
+class SendError(SenderError):
+ pass
+
+class TargetCapacityExceeded(SendError):
+ pass
+
+## Receiver Errors
+
+class ReceiverError(LinkError):
pass
-class ReceiveError(SessionError):
+class FetchError(ReceiverError):
pass
-class Empty(ReceiveError):
+class Empty(FetchError):
"""
Exception raised by L{Receiver.fetch} when there is no message
available within the alloted time.