Considere estas dos fragmentos:Inconsistencia de SyntaxError en Python?
try:
a+a=a
except SyntaxError:
print "first exception caught"
.
try:
eval("a+a=a")
except SyntaxError:
print "second exception caught"
En el segundo caso, la "segunda excepción .." declaración está impresa (excepción capturada), mientras que en el primero no lo es.
¿La primera excepción (llamémosla "SyntaxError1") es diferente de la segunda ("SyntaxError2")?
¿Hay alguna forma de detectar SyntaxError1 (lo que suprime los errores de tiempo de compilación)? Envolver grandes bloques de código en eval
no es satisfactoria;)
Suprimir errores en tiempo de compilación ???? ¿Qué puede significar eso? ¿Puede proporcionar alguna definición para el caso de uso en el que desea que se analice el código no dispersable? ¿Qué se supone que va a pasar? ¿Qué tan malo puede ser el código y aún así ser "analizado"? ¿De qué estás hablando? –
La pregunta se centró principalmente en la posible inconsistencia de SyntaxErrors arrojados en diferentes situaciones. Alex explicó que no hay inconsistencia en absoluto, y que todo el comportamiento descrito consiste en los mecanismos del compilador de construir una estructura de nivel superior de try/except. Un archivo de desarrollador confiable * .py podría cargar un caso de uso probable con alguna funcionalidad (¿un simple sistema de complemento?), Con la necesidad de validar su sintaxis inmediatamente después de la carga. – gorsky