Simple unicode-safe version of str(exception)?
Donn Cave
donn at u.washington.edu
Mon Apr 28 19:46:05 EDT 2008
In article <481650E3.4060603 at v.loewis.de>,
"Martin v. Löwis" <martin at v.loewis.de> wrote:
> >> I have code like this:
> >> except Exception, e:
> >> self.setState(self.Failed, str(e))
> >> which fails if the exception contains a unicode argument.
> >
> > Fails how?
>
> ASCII encoding error, I suppose. It fails only if a) one argument
> is a Unicode object, and b) that Unicode object contains non-ASCII
> parameters.
Seem ironic that this fails even though pretty nearly anything
else is a valid input to str() -- socket, dict, whatever?
A sort of generic solution might be to follow str's behavior
with respect to '__str__', extending it to fall back to repr()
whatever goes wrong.
def xtr(a):
try:
return str(a)
except:
return repr(a)
...
self.setState(self.Failed, xtr(e))
Donn Cave, donn at u.washington.edu
More information about the Python-list
mailing list