J'essaie d'avoir un code compatible avec python2.7/3+. Et j'ai du mal à gérer correctement la levée d'une ValueError avec un message en unicode. J'ai trouvé très peu de résultats pour "exception str() failed".
Voici le code :
from __future__ import (
absolute_import, division, print_function, unicode_literals
)
import logging
from builtins import str
from future import standard_library
standard_library.install_aliases()
conf = {}
try:
conf["key"]
except KeyError:
msg = "Message"
msg += " + ünicode"
logging.warn(msg)
raise ValueError(msg)
Dans python3, cela fonctionne comme prévu, mais dans python 2.7 dès que msg
contient l'unicode qu'il donne :
WARNING:root:Message + ünicode
Traceback (most recent call last):
File "<stdin>", line 7, in <module>
ValueError: <exception str() failed>
Remarquez comment l'enregistrement peut gérer la chaîne unicode mais pas ValueError
. Qu'est-ce que je fais de mal ? Comment puis-je avoir un message d'erreur unicode à la fois dans python 2.7 et 3+ ?