В этом ответе https://stackoverflow.com/a/27680814/3456281 представлена следующая конструкция
a=[1,2]
while True:
if IndexError:
print ("Stopped.")
break
print(a[2])
который на самом деле печатает "Stopped". и разрывы (проверены с помощью Python 3.4.1).
Почему?! Почему if IndexError даже законный? Почему a[2] не поднимает IndexError без try ... except вокруг?