python - python中的其他语句
问题描述
我是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')
解决方案
为什么我不能执行print("printed valueError")
?
只是因为代码执行会出现raise ValueError
异常,直接跳转到该except
部分。要解决,您可以换行:
else:
print('printed ValueError')
raise ValueError
为什么不管print("no error occurred")
我输入什么,else 语句都会打印出来?
您正在使用带有try, catch, else, finally
. 它们的顺序是:
try
在块中运行代码。- 是不是发生了什么错误?
- True:
catch
在块中执行代码 - False:
else
在块中执行代码
- True:
finally
在块中运行代码。(这将永远发生!)
综上所述,finally
无论执行过程中是否有错误,都会运行代码形式的语句。在大多数情况下,它会被使用,例如当您open
在 try 块中提交文件时,从中读取并突然发生错误。在这种情况下,您想要close
文件并清除引用。该代码将进入该finally
块。
SO上的类似问题:else的目的和最后在异常处理中
推荐阅读
- java - 类型参数“S”的推断类型“S”不在其范围内;应该扩展'ua.com.store.entity.Country
- php - 使用带有 wordpress 的 php 请求
- asp.net - 如何在单选按钮列表中添加复选框元素
- android - 将 Hotmail (Outlook.com) 日历同步到 Google Android 日历应用?
- java - 在 jFreeChart 中的图例符号上设置前景 alpha
- c++ - C++11 移至本地 const 引用:范围
- vb.net - 从动态创建的文本框中读取数据
- python - 我正在尝试将此模式转换为星号和空格而不是 0 和 1
- postgresql - 汇总日期 postgresql 的总和
- javascript - 如何扩展 javascript 数组类?