after patching CopyableFailure as written, the stack trace now ends with the following lines. The correct exception message is still not shown. It contains unicode chars which reflect.py/safe_str cannot handle.
File "/hdd/pub/src/gitgames/kajongg/src/scoringengine.py", line 170, in initRuleset raise Exception(m18n('ruleset "%1" not found', self.name)) exceptions.Exception: <Exception instance at 0x30e8b48 with str error: 'Traceback (most recent call last):\n File "/usr/local/lib/python2.7/dist- packages/Twisted-11.0.0-py2.7-linux-x86_64.egg/twisted/python/reflect.py", line 546, in _safeFormat\n return formatter(o)\nUnicodeEncodeError: \'ascii\' codec can\'t encode character u\'\\u201e\' in position 10: ordinal not in range(128)\n'> Unhandled error in Deferred: after replacing safe_str by safe_repr in twisted/python/failure.py, I finally get a meaningful printout: File "/hdd/pub/src/gitgames/kajongg/src/scoringengine.py", line 170, in initRuleset raise Exception(m18n('ruleset "%1" not found', self.name)) exceptions.Exception: Exception(u'Regelsatz \u201e55a8a17e29a1a087cc8df9cedb5590cd\u201c nicht gefunden',) Unhandled error in Deferred: of course a correct encoding would be even better... my patch: --- failure.org 2012-02-06 22:22:46.395065076 +0100 +++ failure.py 2012-02-06 22:22:51.259064816 +0100 @@ -472,7 +472,7 @@ """Get a string of the exception which caused this Failure.""" if isinstance(self.value, Failure): return self.value.getErrorMessage() - return reflect.safe_str(self.value) + return reflect.safe_repr(self.value) def getBriefTraceback(self): io = StringIO() @@ -517,7 +517,7 @@ w("%s: %s: %s\n" % ( hasFrames, reflect.safe_str(self.type), - reflect.safe_str(self.value))) + reflect.safe_repr(self.value))) else: w( 'Traceback (most recent call last):\n') @@ -542,7 +542,7 @@ w(self.type + "\n") else: w("%s: %s\n" % (reflect.qual(self.type), - reflect.safe_str(self.value))) + reflect.safe_repr(self.value))) # chaining if isinstance(self.value, Failure): # TODO: indentation for chained failures? -- Wolfgang _______________________________________________ Twisted-Python mailing list Twisted-Python@twistedmatrix.com http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python