def runTransaction(trans): try: trans.awake() trans.respond() except Exception, first: try: trans.sleep() except Exception, second: # The first exception is more important than the *second* one # that comes from sleep(). In fact, without this little trick # the first exception gets hidden by the second which is often # just a result of the first. Then you're stuck scratching your # head wondering what the first might have been. raise Exception('Two exceptions. first=%s; second=%s' % (excstr(first), excstr(second)))
def runTransaction(trans): try: trans.awake() trans.respond() except Exception as first: try: trans.sleep() except Exception as second: # The first exception is more important than the *second* one # that comes from sleep(). In fact, without this little trick # the first exception gets hidden by the second which is often # just a result of the first. Then you're stuck scratching your # head wondering what the first might have been. raise Exception('Two exceptions. first=%s; second=%s' % (excstr(first), excstr(second))) else: raise # no problems with sleep() so raise the one and only exception else: trans.sleep()
def debugStr(self): out = [self.__class__.__name__, '(', '0x%x'%id(self)] sep = ', ' for key in self._debugKeys: out.append(sep) out.append(key) out.append('=') try: out.append(repr(self.valueForName(key))) except Exception, exc: from MiscUtils.Funcs import excstr out.append('('+excstr(exc)+')')
def debugStr(self): out = [self.__class__.__name__, '(', '0x%x' % id(self)] sep = ', ' for key in self._debugKeys: out.append(sep) out.append(key) out.append('=') try: out.append(repr(valueForName(self, key))) except Exception as exc: from MiscUtils.Funcs import excstr out.append('(' + excstr(exc) + ')') out.append(')') out = ''.join(out) return out
def testExcstr(self): self.assertEqual(excstr(None), None) self.assertEqual(excstr(ValueError('Kawoom!')), 'ValueError: Kawoom!')