class ExceptionContainer(Exception):
def __init__(self, message = "", **kw):
self.__dict__["__info"] = Container(message = message, **kw)
def __delattr__(self, name):
delattr(self.__dict__["__info"], name)
def __getattr__(self, name):
return getattr(self.__dict__["__info"], name)
def __setattr__(self, name, value):
setattr(self.__dict__["__info"], name, value)
def __repr__(self):
return repr(self.__dict__["__info"])
def __str__(self):
return str(self.__dict__["__info"])
---------
example:
---------
>>> class FileNotFoundError(ExceptionContainer):
... pass
...
>>> raise FileNotFoundError("failed to open the file!", filename = "/tmp/blah", errno = 17)
Traceback (most recent call last):
File "", line 1, in ?
__main__.FileNotFoundError: Container:
errno = 17
filename = '/tmp/blah'
message = 'failed to open the file!'
>>>
>>> try:
... raise FileNotFoundError("failed to open the file!", filename = "/tmp/blah", errno = 17)
... except FileNotFoundError, ex:
... ex.errno = 18
... raise
...
Traceback (most recent call last):
File "", line 2, in ?
__main__.FileNotFoundError: Container:
errno = 18
filename = '/tmp/blah'
message = 'failed to open the file!'
>>>