diff options
author | Sergey Vilgelm <svilgelm@mirantis.com> | 2013-06-25 14:42:15 +0400 |
---|---|---|
committer | Sergey Vilgelm <svilgelm@mirantis.com> | 2013-06-25 14:55:09 +0400 |
commit | 31325752e1d202c95f65b8af0e656b283043f1cd (patch) | |
tree | 194bf8abe8537cdf589d5b4841361714e2a49907 | |
parent | bc10b7aeada4ea66e85e10b94b5c219e3c8d2e77 (diff) | |
download | oslo-31325752e1d202c95f65b8af0e656b283043f1cd.tar.gz oslo-31325752e1d202c95f65b8af0e656b283043f1cd.tar.xz oslo-31325752e1d202c95f65b8af0e656b283043f1cd.zip |
Do not raise NEW exceptions
Raising NEW exception is bad practice, because we lose TraceBack.
So all places like:
except SomeException as e:
raise e
should be replaced by
except SomeException:
raise
If we are doing some other actions before reraising we should
store information about exception then do all actions and then
reraise it. This is caused by eventlet bug. It lost information
about exception if it switch threads.
fixes bug 1191730
Change-Id: I7bce659591c4c3e4bc41e12d7d8390128c30e2e4
-rw-r--r-- | HACKING.rst | 10 | ||||
-rw-r--r-- | openstack/common/exception.py | 4 | ||||
-rw-r--r-- | tests/unit/rpc/test_common.py | 2 |
3 files changed, 13 insertions, 3 deletions
diff --git a/HACKING.rst b/HACKING.rst index 3cea316..846c1b1 100644 --- a/HACKING.rst +++ b/HACKING.rst @@ -46,6 +46,16 @@ General pass +- Use 'raise' instead of 'raise e' to preserve original traceback or exception being reraised:: + + except Exception as e: + ... + raise e # BAD + + except Exception: + ... + raise # OKAY + TODO vs FIXME ------------- diff --git a/openstack/common/exception.py b/openstack/common/exception.py index cdf40f3..f6c8463 100644 --- a/openstack/common/exception.py +++ b/openstack/common/exception.py @@ -122,9 +122,9 @@ class OpenstackException(Exception): try: self._error_string = self.message % kwargs - except Exception as e: + except Exception: if _FATAL_EXCEPTION_FORMAT_ERRORS: - raise e + raise else: # at least get the core message out if something happened self._error_string = self.message diff --git a/tests/unit/rpc/test_common.py b/tests/unit/rpc/test_common.py index c2432f4..6f32005 100644 --- a/tests/unit/rpc/test_common.py +++ b/tests/unit/rpc/test_common.py @@ -108,7 +108,7 @@ class RpcCommonTestCase(test_utils.BaseTestCase): '__unicode__': str_override}) new_ex_type.__module__ = '%s_Remote' % e.__class__.__module__ e.__class__ = new_ex_type - raise e + raise try: raise_remote_exception() |