python常见异常和异常捕获
一、常见异常
NameError错误,比如:
a = b
结果:
NameError: name 'b' is not defined
SyntaxError错误,比如:
print(()
结果:
SyntaxError: unexpected EOF while parsing
ValueError错误,比如:
year = int(input('输入年份:'))
结果:
ValueError: invalid literal for int() with base 10: 'aa'
IndexError错误,比如:
a = [1,2,3,4]
print(a[4])
结果:
IndexError: list index out of range
IndentationError错误,也就是缩进错误,比如:
a = [1,2,3]
a.append('a')
结果:
IndentationError: unexpected indent
KeyError错误,比如:
a = {'a':1,'b':2,'c':3}
print(a['d'])
结果:
KeyError: 'd'
AttributeError错误,属性错误,比如:
a = 123
a.append('a')
结果:
AttributeError: 'int' object has no attribute 'append'
二、异常捕获
对特定的错误进行捕获,用as可以自定义自己想要的提示信息,比如:
try:
a = {'a': 1, 'b': 2, 'c': 3}
print(a['d'])
except KeyError as e:
print('错误信息提示:%s'%e)
结果:
错误信息提示:'d'
捕获多个异常,需要注意的是捕获多个异常时要用(),因为except后面只能接一个参数,比如:
try:
a = {'a': 1, 'b': 2, 'c': 3}
print(a['d'])
except (KeyError,AttributeError,IndexError) as e:
print('错误信息提示:%s'%e)
结果:
错误信息提示:'d'
捕获全部异常时,可以用Exception,比如:
try:
a = {'a': 1, 'b': 2, 'c': 3}
print(a['d'])
except Exception as e:
print('错误信息提示:%s'%e)
结果:
错误信息提示:'d'
自定义错误信息,比如:
try:
raise KeyError('TheError')
a = {'a': 1, 'b': 2, 'c': 3}
print(a['d'])
except KeyError as e:
print('错误信息提示:%s'%e)
结果:
错误信息提示:'TheError'
异常捕获中finally的使用。一般用于不管程序是否错误,程序最后都应该执行的步骤,例如在文件操作中,关闭文件是最后必须执行的操作,比如:
try:
text = open('a1.txt','r')
print(text.readline())
except Exception as e:
print('错误信息提示:%s'%e)
finally:
text.close()
结果:
text.close()
NameError: name 'text' is not defined