Почему я могу уловить ошибку 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 неудовлетворительно ;)

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