Los siguientes fragmentos de código hacen lo mismo. Capturan cada excepción y ejecutan el código en el except:bloque
Fragmento 1 -
try:
#some code that may throw an exception
except:
#exception handling code
Fragmento 2 -
try:
#some code that may throw an exception
except Exception as e:
#exception handling code
¿Cuál es exactamente la diferencia en ambas construcciones?
python
python-3.x
narendranathjoshi
fuente
fuente

except Exception, e:yexcept Exception as e:. Esta pregunta pregunta cuál es la diferencia entreexcept:yexcept Exception as e:.Respuestas:
En el segundo puede acceder a los atributos del objeto de excepción:
Pero no detecta
BaseExceptionni las excepciones que salen del sistemaSystemExit,KeyboardInterruptyGeneratorExit:Que un desnudo, excepto:
Consulte la sección Excepciones incorporadas de los documentos y la sección Errores y excepciones del tutorial para obtener más información.
fuente
Exceptionse deriva deBaseException, por esoexcept Exceptionno atrapaBaseException. Si escribesexcept BaseException, también será atrapado. Desnudoexceptsimplemente atrapa todo.exceptdebe ser el último en una serie deexceptbloques, mientras que no obtendrá un error si lo colocaexcept Exceptionantes de otrosexceptbloques: simplemente se ignorarán en silencio (si manejanExceptionsubclases). Algo a tener en cuenta.exceptyexcept Exception. "Algo a tener en cuenta" parece un poco extraño ahora, pero en ese momento esperaba que Python eligiera elexceptbloque más específico , independientemente de dónde estuviera, y me decepcionó un poco descubrir lo contrario.acepta todas las excepciones, mientras que
sólo acepta excepciones que estás significaba para la captura.
Aquí hay un ejemplo de uno que no debes atrapar:
El primero silenció el
KeyboardInterrupt!Aquí hay una lista rápida:
Si quieres atrapar alguno de ellos, es mejor hacerlo
para señalar que sabes lo que estás haciendo.
Todas las excepciones provienen
BaseException, y aquellas de las que debes atrapar día a día (las que se lanzarán para el programador) también heredanException.fuente
except(Exception)nunca atrapaKeyboardInterrupterrores.as eno tiene nada que ver con eso.as e, porque supuse que es obvio lo que hace.SystemExito de lasKeyboardInterruptque escapar. No es un caso común, pero sucede.Existen diferencias con algunas excepciones, por ejemplo, KeyboardInterrupt.
Lectura PEP8 :
fuente
El uso del segundo formulario le proporciona una variable (nombrada en función de la
ascláusula, en su ejemploe) en elexceptámbito del bloque con el objeto de excepción vinculado a él para que pueda usar la información en la excepción (tipo, mensaje, seguimiento de pila, etc.) para manejar la excepción en una mansión más especialmente adaptada.fuente
Otra forma de ver esto. Consulte los detalles de la excepción:
Hay muchas "cosas" para acceder usando la sintaxis 'como e'.
Este código estaba destinado únicamente a mostrar los detalles de esta instancia.
fuente