常见异常
AttributeError:试图访问一个对象没有的属性
IOError: 输入/输出异常
ImportError:无法引入模块或包
IndexError:下标索引超出序列边界
KeyError:试图访问字典里不存在的键
NameError:尝试访问一个没有申明的变量
TypeError:传入对象类型与要求的不符合,比如1/‘0’
ValueError:传入一个调用者不期望的值
UnicodeDecodeError:编码错误,常发生于读取外部文件时
捕捉异常
python中,可以使用try/except捕捉并处理异常
语法:
try:
被检测的代码
except 异常类型:
一旦检测到异常就执行此处的代码
- 示例1:err可以将异常内容记录下来
try:
1/0
except ZeroDivisionError as err:
print(err)
except后面没有指定错误类型时,默认处理一切异常
try:
1/0
except:
pass
- 示例2:多个except子句
try:
1/0
except ZeroDivisionError as err1:
print(err1)
except TypeError as err2:
print(err2)
- 示例3:结合else和finally,当没有异常出现时,才会运行else子句,finally子句的内容无论如何都会运行
try:
1/0
except (ZeroDivisionError,IOError) as err:
print(err)
else:
print('Well Done!')
finally:
print('It\'s over')