常见错误类型
| 异常类名 | 描述 |
|---|---|
| Exception | 所有异常类的基类 |
| AttributeError | 如果对象obj没有foo成员,会由语法obj.foo引发 |
| EOFError | 一个“end of file”到达控制台或者文件输入引发错误 |
| IOError | 输入/输出操作(如打开文件)失败引发错误 |
| IndexError | 索引超出序列范围引发错误 |
| KeyError | 请求一个不存在的集合或字典关键字引发错误 |
| KeyboardInterrupt | 用户按ctrl-C 终端程序引发错误 |
| NameError | 使用不存在的标识符引发错误 |
| StopIteration | 下一次遍历的元素不存在时引发错误 |
| TyperError | 发送给函数的参数类型不正确引发错误 |
| ValueError | 函数参数值非法时引发错误(例如,sqrt(-1)) |
| ZeroDivisionError | 除数为0引发错误 |
抛出异常
为了方便我们自己显示化问题,可以将异常类型抛出,命令如下:
raise ValueError('x cannot be negative') # 异常类型要根据用户可以产生的进行选择,括号中进行语句提示
捕捉异常
当我们有更大的把握可以对异常进行不同方法处理时,我们建议应该采用try--except方式,控制异常。
# 格式
try:
正常语句1
except 异常类型: # 默认空为所有异常,指示可以确定某个异常
操作
except 异常类型:
操作
.....
finally: # 无论是在正常情况下还是异常情况下,均执行(清理工作),可省略
语句
举例子:
age = -1
while age <= 0:
try:
age = int(input('Enter your age in years:')
except (ValueError, EOFError):
print("Invalid response")
# 发现错误时,正常语句立即停止。
# 在输入的age不是数字时,它无法完成赋值,while语句将始终进行。
在检测错误类型时,建议包装一个检测器检查异常,使代码更简洁可观。
7333

被折叠的 条评论
为什么被折叠?



