Python崩溃而不是引发异常

2024-04-16 18:59:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了这个程序:

def fun():
 try: 1/0
 except: fun()
fun()

我以为我会得到一个例外,但是,我得到了以下致命错误:

^{pr2}$

(显示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

但是当代码出错时,程序就会崩溃。在

有人能解释一下为什么会这样吗?在


Tags: in程序mostdef错误stdinlinefile
1条回答
网友
1楼 · 发布于 2024-04-16 18:59:59

是的,你在相同名称的函数中调用你的函数,这会导致你陷入一个递归的兔子洞(一个函数在调用自己),没有转义

def fun():
 try: 1/0
 except: fun()

这意味着,当您调用fun()如果1/0发生错误,它将移动到except分支并调用函数fun,如果1/0发生错误,它将移动到except分支并调用函数fun,如果1/0发生错误,它将移动到except分支,并调用函数fun,如果1/0会引发该函数fun一个错误,它将移动到except分支并调用函数fun,该函数。。。在

如果你明白了。在

因此,如果是错误处理,您可能需要返回一些值,例如:

^{pr2}$

相关问题 更多 >