实际上,Python 的 else
块在 try
/except
结构中并不是在 try
块成功执行且没有引发异常时执行的。相反,else
块仅在 try
块中的代码成功执行完毕(即没有异常被抛出)并且没有执行任何 except
块时执行。
这里有一个简单的例子来说明这一点:
try:
# 尝试执行一些代码
result = 10 / 2
print("成功计算:", result)
except ZeroDivisionError:
# 如果除零异常被抛出,执行这里
print("不能除以零!")
else:
# 如果try块成功执行且没有异常被抛出,执行这里
print("try块成功执行,没有异常。")
finally:
# 无论try块是否成功执行,finally块总是会执行
print("这是finally块,总是会被执行。")
在这个例子中,try
块中的代码成功执行,没有引发任何异常,所以 else
块会被执行。同时,finally
块也会被执行,因为它总是在 try
/except
/else
结构之后执行,无论是否有异常被抛出。
注意,如果你有一个或多个 except
块,并且其中一个 except
块被执行(即捕获了异常),那么 else
块将不会被执行。只有在 try
块成功执行并且没有 except
块被执行时,else
块才会执行。