tag python3 parser parse htmlparser python-2.7 exception python-3.x traceback raise

python 2.7 - python3 - ¿Cómo imitar el aumento de Python 3 desde Python 2?



python search in html (2)

En lugar de usar six.raise_from, intente usar six.reraise, como se explica en esta página:

python-future.org/compatible_idioms.html

from six import reraise as raise_ # or from future.utils import raise_ traceback = sys.exc_info()[2] raise_(ValueError, "dodgy value", traceback)

Python 3 tiene el orden

try: raise OneException(''sorry'') except OneException as e: # after a failed attempt of mitigation: raise AnotherException(''I give up'') from e

sintaxis que permite generar una excepción de seguimiento sin perder el contexto. La mejor analogía que podría encontrar en Python 2 es

raise AnotherException((e,''I give up'')), None, sys.exc_info()[2]

donde (e,'''') es un truco feo para incluir el nombre de la excepción original en el mensaje. ¿Pero no hay una mejor manera?


Hay un raise_from en python-future ; simplemente instálalo

pip install future

e importar para usar

from future.utils import raise_from # or: from six import raise_from class FileDatabase: def __init__(self, filename): try: self.file = open(filename) except IOError as exc: raise_from(DatabaseError(''failed to open''), exc)

ACTUALIZAR

El paquete de compatibilidad six también admite raise_from , desde la versión 1.9 (lanzado en 2015). Se utiliza de la misma manera que anteriormente.