pzrqs Beitrag sagt zu verwenden:
str(e)
Das war genau das, was ich brauchte.
(Wenn Sie sich in einer Unicode-Umgebung befinden, scheint Folgendes zu sein:
unicode(e)
wird funktionieren, und es scheint in einer Nicht-Unicode-Umgebung gut zu funktionieren)
Pzrq sagte viele andere gute Sachen, aber ich habe ihre Antwort wegen all der guten Sachen fast verpasst. Da ich keine 50 Punkte habe, kann ich ihre Antwort nicht kommentieren, um auf die einfache Lösung aufmerksam zu machen, die funktioniert. Da ich keine 15 habe, kann ich diese Antwort nicht abstimmen, aber ich kann posten (fühlt sich rückwärts an, aber na ja) - also hier poste ich - wahrscheinlich Punkte dafür verlieren ...
Da es mein Ziel ist, die Aufmerksamkeit auf die Antwort von pzrq zu lenken, bitte nicht glasieren und sie in allen folgenden Abschnitten verpassen. Die ersten Zeilen dieses Beitrags sind die wichtigsten.
Meine Geschichte:
Das Problem, für das ich hierher gekommen bin, war, wenn Sie eine Ausnahme von einer Klasse abfangen möchten, über die Sie keine Kontrolle haben - was dann ??? Ich werde sicherlich nicht alle möglichen Klassen unterordnen, die mein Code verwendet, um eine Nachricht aus allen möglichen Ausnahmen herauszuholen!
Ich habe verwendet:
except Exception as e:
print '%s (%s)' % (e.message,type(e))
was, wie wir alle jetzt wissen, die Warnung gibt, nach der OP gefragt wurde (was mich hierher gebracht hat), und dies, was pzrq als eine Möglichkeit gibt, dies zu tun:
except Exception as e:
print '%s (%s)' % (str(e),type(e))
nicht.
Ich bin nicht in einer Unicode-Umgebung, aber die Antwort von jjc hat mich gefragt, also musste ich es versuchen. In diesem Zusammenhang wird dies:
except Exception as e:
print '%s (%s)' % (unicode(e),type(e))
was zu meiner Überraschung genau wie str (e) funktionierte - also benutze ich das jetzt.
Ich weiß nicht, ob 'str (e) / unicode (e)' der 'genehmigte Python-Weg' ist, und ich werde wahrscheinlich herausfinden, warum das nicht gut ist, wenn ich auf 3.0 komme, aber man hofft, dass die Fähigkeit, mit einem umzugehen unerwartete Ausnahme (*) ohne zu sterben und trotzdem einige Informationen daraus zu erhalten, wird niemals verschwinden ...
(*) Hmm. "unerwartete Ausnahme" - ich glaube ich stotterte nur!