Python中的Else语句

10 浏览
0 Comments

Python中的Else语句

我是一个Python入门者。以下是对下面代码的两个快速问题:

  1. 为什么我不能执行print(\"printed valueError\")
  2. 为什么无论我输入什么,都会输出带有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日
0
0 Comments

无论何时都会打印下面"finally"块的内容。

试一下:从"try"块中删除'else',并将以下内容添加到'except'块中:

print('printed ValueError')
raise ValueError

'except'后的'else'仅在没有错误发生时运行。

0
0 Comments

为什么我执行不了print("printed valueError")

这是因为程序执行会抛出ValueError异常并直接跳转到except部分。要解决这个问题,可以将行变换位置:

else:
    print('printed ValueError')
    raise ValueError


无论我放什么进去,为什么有print("no error occurred")的else语句都会输出?

您正在使用try, catch, else, finally语法。它们的顺序是:

  1. try块中运行代码。
  2. 发生了某些错误吗?
    • 是:执行catch块中的代码
    • 不是:执行else块中的代码
  3. finally块中运行代码。(这将始终发生!)

由上可知,finally语句中的代码始终会执行,无论是否在执行过程中出现错误。在大多数情况下,它通常在您尝试在try块中打开文件,从中读取数据,但突然遇到错误的情况下使用。在这种情况下,您需要在finally块中关闭文件,并清除引用。相关代码将置于finally块中。


类似的SO问题:异常处理中else和finally的目的

0