try pass handling exceptions error custom catch all python exception python-3.x python-3.3 traceback

handling - python try except pass



¿Cómo puedo suprimir más fácilmente las excepciones anteriores cuando formulo mi propia excepción en respuesta? (2)

Considerar

try: import someProprietaryModule except ImportError: raise ImportError(''It appears that <someProprietaryModule> is not installed...'')

Cuando se ejecuta, si someProprietaryModule no está instalado, uno ve:

(traceback data) ImportError: unknown module: someProprietaryModule During handling of the above exception, another exception occurred: (traceback data) ImportError: It appears that <someProprietaryModule> is not installed...

Tal vez no quiero que aparezca la línea "Durante el manejo de la excepción anterior ..." (y las líneas sobre ella). Yo podría hacer esto:

_moduleInstalled = True try: import someProprietaryModule except ImportError: _moduleInstalled = False if not _moduleInstalled: raise ImportError(''It appears that <someProprietaryModule> is not installed...'')

Pero eso se siente como un truco. ¿Qué más podría hacer?


En Python 3.3 y posteriores, el raise ... from None se puede usar en esta situación.

try: import someProprietaryModule except ImportError: raise ImportError(''It appears that <someProprietaryModule> is not installed...'') from None

Esto tiene los resultados deseados.


Esto se puede hacer así en Python 2.7 y Python 3:

try: import someProprietaryModule except ImportError as e: raised_error = e if isinstance(raised_error, ImportError): raise ImportError(''It appears that <someProprietaryModule> is not installed...'')