2011-02-25 8 views
83

en Python, hay dos formas de atrapar una excepciónEn Python, ¿cuál es la diferencia entre 'salvo excepciones como e' y 'salvo excepción, e'

except Exception, e: 

except Exception as e: 

Parece que 'como E' es el uno para usar en el futuro. ¿En qué versión de python cambió esto? ¿Alguna idea de por qué?

+14

La sintaxis 'as e' se introdujo en Python 2.6. – geoffspear

+3

Solo una nota para cualquiera que use Jython, que lea esto y decida reemplazar toda "Excepción, e" por "Excepción como e": aún no es compatible, a partir de Jython 2.5.2. Ver: http://stackoverflow.com/questions/3020966/jython-syntaxerror –

Respuesta

43

Este PEP introduce cambios destinados a ayudar a eliminar las ambigüedades en la gramática de Python, simplificar las clases de excepción, simplificar la recolección de basura para excepciones y reducir el tamaño del lenguaje en Python 3.0.

PEP 3110: "Catching Exceptions in Python 3000"

+0

Pero estoy usando 2.6 y tengo acceso a ambos estilos. Mi compañero de trabajo tuvo que cambiar por código a 'excepto Exception, e' en lugar de' excepto Exception como e' porque (atascado) está usando una versión anterior. – Nathan

+3

La nueva gramática se transfirió a 2.6, pero la antigua gramática no se eliminó. –

12

Respuesta corta por qué: Exception, e y Exception, TypeError son difíciles de distinguir. Larga respuesta: lo que Ignacio dijo.

Cuestiones relacionadas