Python Try/Except块是否创建自己的堆栈?
当异常在f(n)内引发时,解释器是否返回到try/except块(这意味着try/except有自己的块),或者是否立即引发并处理该错误(这意味着相反)?实际上它从f(n)引发函数直到找到一个try/catch处理程序或程序堆栈的末尾。在最后一种情况下,程序将停止并向用户发出错误提示(通过控制台) 这将向用户提出异常:Python Try/Except块是否创建自己的堆栈?,python,python-3.x,Python,Python 3.x,当异常在f(n)内引发时,解释器是否返回到try/except块(这意味着try/except有自己的块),或者是否立即引发并处理该错误(这意味着相反)?实际上它从f(n)引发函数直到找到一个try/catch处理程序或程序堆栈的末尾。在最后一种情况下,程序将停止并向用户发出错误提示(通过控制台) 这将向用户提出异常: def f(n): if n>0: print(1/n) else: raise Exception try: f(
def f(n):
if n>0:
print(1/n)
else:
raise Exception
try:
f(0)
except Exception:
print("Error!")
但如果在两者之间添加try/catch,则异常将由except块处理:
def f(n):
raise Exception
f(5)
实际上,它从f(n)函数提升,直到找到try/catch处理程序或程序堆栈的末尾。在最后一种情况下,程序将停止并向用户发出错误提示(通过控制台) 这将向用户提出异常:
def f(n):
if n>0:
print(1/n)
else:
raise Exception
try:
f(0)
except Exception:
print("Error!")
但如果在两者之间添加try/catch,则异常将由except块处理:
def f(n):
raise Exception
f(5)
在你的情况下,我认为这更像蟒蛇:
def f(n):
raise Exception
try:
f(5)
except:
print('Error handled')
你永远不想提出一个笼统的例外,因为你失去了了解出了什么问题的机会。在你的情况下,我认为这更像是一个恶作剧:
def f(n):
raise Exception
try:
f(5)
except:
print('Error handled')
你永远不想提出一个全面的异常,因为你失去了了解出错原因的机会很好的解释,try/except的错误用法(使用一个空白的except语句是不好的做法)是的,没错,例如,我使用了一个简单的打印显示来显示如果你处理一个异常可以附加什么,但正如@Two-bitalchest所说,如果你想处理这样的错误,你必须执行另一个代码,但永远不要离开except BLOCK(没有真正的句柄)好的解释,try/except的错误使用(使用空白的except语句是错误的做法)是的,例如,我使用了一个简单的打印显示来显示如果处理异常可以附加什么,但是正如@Two Bitalchest所说,如果要处理此类错误,必须执行另一个代码,但决不能离开Exception bloc Black(没有真正的句柄)