diff options
author | elie <elie> | 2013-06-10 15:56:16 +0000 |
---|---|---|
committer | elie <elie> | 2013-06-10 15:56:16 +0000 |
commit | ec8b127d86fd1300dfb13aa54522015b33f8cf7b (patch) | |
tree | bb276d216c01beffab19b2a0582e8bbbac862a8f | |
parent | 394d8d9c247e5a1bd1eee61e8b049281038f6f63 (diff) | |
download | pysnmp-git-ec8b127d86fd1300dfb13aa54522015b33f8cf7b.tar.gz |
do not re-raise exceptions with original traceback as it breaks
py3k compatibility
instead log the original traceback into debug routine
-rw-r--r-- | pysnmp/smi/instrum.py | 5 | ||||
-rw-r--r-- | pysnmp/smi/mibs/SNMPv2-SMI.py | 9 |
2 files changed, 8 insertions, 6 deletions
diff --git a/pysnmp/smi/instrum.py b/pysnmp/smi/instrum.py index a7605d41..0c636619 100644 --- a/pysnmp/smi/instrum.py +++ b/pysnmp/smi/instrum.py @@ -1,5 +1,6 @@ # MIB modules management import sys +import traceback from pysnmp.smi import error from pysnmp import debug @@ -218,7 +219,7 @@ class MibInstrumController(AbstractMibInstrumController): if origExc is None: # Take the first exception origExc, origTraceback = sys.exc_info()[1:3] status = 'err' - debug.logger & debug.flagIns and debug.logger('flipFlopFsm: fun %s failed %s for %s=%r' % (f, origExc, name, val)) + debug.logger & debug.flagIns and debug.logger('flipFlopFsm: fun %s failed %s for %s=%r with traceback: %s' % (f, origExc, name, val, traceback.format_exc(origTraceback))) break else: debug.logger & debug.flagIns and debug.logger('flipFlopFsm: fun %s suceeded for %s=%r' % (f, name, val)) @@ -227,7 +228,7 @@ class MibInstrumController(AbstractMibInstrumController): idx = idx + 1 if origExc: if sys.version_info[0] <= 2: - raise origExc, None, origTraceback + raise origExc else: try: raise origExc.with_traceback(origTraceback) diff --git a/pysnmp/smi/mibs/SNMPv2-SMI.py b/pysnmp/smi/mibs/SNMPv2-SMI.py index f7c0a743..7b7f15cd 100644 --- a/pysnmp/smi/mibs/SNMPv2-SMI.py +++ b/pysnmp/smi/mibs/SNMPv2-SMI.py @@ -1,4 +1,5 @@ import sys +import traceback from pysnmp.smi.indices import OidOrderedDict from pysnmp.smi import exval, error from pysnmp.proto import rfc1902 @@ -532,10 +533,10 @@ class MibScalarInstance(MibTree): else: return self.syntax.clone(value) except PyAsn1Error: - why = sys.exc_info()[1] - debug.logger & debug.flagIns and debug.logger('setValue: %s=%r failed: %s' % (self.name, value, why)) - if isinstance(why, error.TableRowManagement): - raise why + exc_t, exc_v, exc_tb = sys.exc_info() + debug.logger & debug.flagIns and debug.logger('setValue: %s=%r failed %s with traceback %s' % (self.name, value, exc_v, traceback.format_exc(exc_tb))) + if isinstance(exc_v, error.TableRowManagement): + raise exc_v else: raise error.WrongValueError(idx=idx, name=name, msg=why) |