Python中的Else语句
Python中的Else语句
我是一个Python入门者。以下是对下面代码的两个快速问题:
- 为什么我不能执行
print(\"printed valueError\")
? - 为什么无论我输入什么,都会输出带有
print(\"no error occurred\")
的else语句?
代码:
def int_checker(a,b): try: if isinstance(a,int) and isinstance(b,int): print('both integers') else: raise ValueError print('printed ValueError') except: print('error occurred') else: print('no error occurred') finally: print('no error occurred') print(int_checker(1,2)) print(int_checker(1,'a')
admin 更改状态以发布 2023年5月22日
为什么我执行不了print("printed valueError")
?
这是因为程序执行会抛出ValueError
异常并直接跳转到except
部分。要解决这个问题,可以将行变换位置:
else: print('printed ValueError') raise ValueError
无论我放什么进去,为什么有print("no error occurred")
的else语句都会输出?
您正在使用try, catch, else, finally
语法。它们的顺序是:
- 在
try
块中运行代码。 - 发生了某些错误吗?
- 是:执行
catch
块中的代码 - 不是:执行
else
块中的代码
- 是:执行
- 在
finally
块中运行代码。(这将始终发生!)
由上可知,finally
语句中的代码始终会执行,无论是否在执行过程中出现错误。在大多数情况下,它通常在您尝试在try块中打开文件,从中读取数据,但突然遇到错误的情况下使用。在这种情况下,您需要在finally
块中关闭
文件,并清除引用
。相关代码将置于finally
块中。
类似的SO问题:异常处理中else和finally的目的