Else statement in python
我是一个Python初学者。以下代码的两个快速问题:
为什么我不能执行print("printed valueError")?
为什么与print("no error occurred")的else语句不管我输入什么都会打印出来?
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 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') |
- 你的压痕不正确,请改正
- print('printedValueError')就在raise语句之后。引发异常时,执行将转到except块,而不是下一行。所以这条线是不可到达的。
- 现在,它是finally语句,打印no error occured语句。
- print('no error occurred')位于finally区块内。finally块的要点是,无论try块中发生了什么,都应该始终执行它。
- 如何在python中使用"raise"关键字的可能副本
- 谢谢!快速问题——第二个else语句何时执行?似乎只有当两个输入都是整数时才执行它。如果其中一个输入不是整数,则执行except语句,然后跳到finally else:print("未发生错误")。
为什么我不能执行print("printed valueError")?
这仅仅是因为代码执行将出现raise ValueError异常,并直接跳到except部分。要解决此问题,您可以切换线路:
1 2 3
| else:
print('printed ValueError')
raise ValueError |
为什么与print("no error occurred")的else语句不管我输入什么都会打印出来?
您正在对try, catch, else, finally使用语法。它们的顺序是:
在try块中运行代码。
发生错误了吗?
- 正确:在catch块中执行代码
- 假:执行else块中的代码
在finally块中运行代码。(这将永远发生!)
从上面看,无论执行过程中是否有错误,代码形式finally语句每次都会运行。在大多数情况下,例如,当您在try块中读取cx1〔10〕文件时,会从中读取该文件并突然发生错误。在这种情况下,您需要close文件并清除引用。该代码将转到finally块。
关于so的类似问题:else的目的和异常处理的最终目的
- 谢谢!快速问题——第二个else语句何时执行?似乎只有当两个输入都是整数时才执行它。如果其中一个输入不是整数,则执行except语句,然后跳到finally else:print("未发生错误")。
"finally"块中的任何内容都将每次打印。
尝试此操作:从"Try"块中删除"Else",并将以下内容添加到"Except"块中:
1 2
| print('printed ValueError')
raise ValueError |
"except"之后的"else"仅在未发生错误时运行