Я написал эту программу:
def fun():
try: 1/0
except: fun()
fun()
Я думал, что получу исключение, но вместо этого я получил следующую фатальную ошибку:
Fatal Python error: Cannot recover from stack overflow.
Current thread 0x00003bec (most recent call first):
File "<stdin>", line 2 in fun
File "<stdin>", line 3 in fun
(File "<stdin>", line 3 in fun
строка показывается 98 раз), а затем программа завершает работу (вместо того, чтобы вызывать исключение).
Я не понимаю, почему это происходит.Когда я запускаю вышеупомянутую программу без ошибок, она просто вызывает исключение:
def fun():
fun()
fun()
Создает следующее исключение:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in fun
File "<stdin>", line 2, in fun
File "<stdin>", line 2, in fun
[Previous line repeated 995 more times]
RecursionError: maximum recursion depth exceeded
Но когда код ошибочен, программа просто падает.
Может кто-нибудь объяснить мне, почему это происходит?