On Fri, May 16, 2014, Igor Kalnitsky <ikalnit...@mirantis.com> wrote:
> > unicode(exc) (or six.text_type(exc)) works for all exceptions, built-in or
> custom.
> 
> That's too much of a statement. Sometimes exceptions implement their own
> __str__ / __unitcode__
> methods, that return too many rubbish information or not enough. What do
> you do in that case?

I don't understand the problem.

What are you expecting from unicode(exc)? What exceptions don't meet
that expectation?

Using str(exc) or unicode(exc) is the standard Python convention to get
a useful string out of an exception. This is what the traceback module
does (at least in Python 2.7) for the last line in the traceback output.

It tries str first, then unicode if str fails. If it uses unicode, then
it backslash escapes it back to ASCII.

The behavior to try str first and then unicode second appears to be
because of legacy reasons.

I'm not entirely sure why it backslash escapes unicode back to ASCII.
Maybe to avoid a possible second exception when printing it?

JE


_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to