Вы поймали исключение, означающее, что Python продолжит цикл, вместо того чтобы позволить исключению просачиваться вверх по стеку, что в конечном итоге приведет к завершению программы, если оно останется необработанным. Вызов raise
без аргумента в предложении except
просто снова вызывает то же исключение, эквивалентное
except EOFError as exc:
print("Unexpected error")
raise exc
Повторное поднятие исключения необходимо, если вы на самом деле не обрабатываете исключение, вместо этого просто добавляете дополнительное ведение журнала до того, как (возможно) кто-то еще его обработает.
Запуск EOFError
можно выполнить, запустив
$ python -c 'input()' < /dev/null
Traceback (most recent call last):
File "<string>", line 1, in <module>
EOFError: EOF when reading a line
, поскольку все попытки чтения из /dev/null
выглядят как попытки чтения из конца файла.