Почему я могу уловить ошибку SyntaxError (или IndentationError или TabError), вызванную кодом eval, но не вызванную самиPython

Программы на Python
Ответить
Anonymous
 Почему я могу уловить ошибку SyntaxError (или IndentationError или TabError), вызванную кодом eval, но не вызванную сами

Сообщение Anonymous »

Рассмотрим эти два фрагмента:

Код: Выделить всё

try:
a+a=a
except SyntaxError:
print("first exception caught")
и

Код: Выделить всё

try:
eval("a+a=a")
except SyntaxError:
print("second exception caught")
Во втором случае выводится оператор «второе исключение ..» (исключение перехвачено), а в первом — нет.
Различно ли первое исключение (назовем его «SyntaxError1») чем-либо отличается от второго («SyntaxError2»)?
Есть ли какой-нибудь способ перехватить SyntaxError1 (таким образом подавляя ошибки времени компиляции)? Обертывание больших блоков кода в eval неудовлетворительно ;)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»