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...'')