一、常见的异常
1、AssertionError
当assert关键字后面条件为假时抛出AssertionError
assert 1<0
Traceback (most recent call last):
File "", line 1, in
assert 1<0
AssertionError
2、AttributeError
当试图访问对象的属性不存在时返回
mylist.yijiaotu
Traceback (most recent call last):
File "", line 1, in
mylist.yijiaotu
AttributeError: 'list' object has no attribute 'yijiaotu'
3、IndexError
在使用序列时常常会遇到IndexError异常,原因是索引超出序列范围
mylist=[1,2,3]
mylist[3]
Traceback (most recent call last):
File "", line 1, in
mylist[3]
IndexError: list index out of range
4、KeyError
在试图查找字典中不存在的键时会引发KeyError,因此建议使用dict.get()方法:
mydict={"sss":1,"zzzz":2,"cccc":3}
mydict["one"]
Traceback (most recent call last):
File "", line 1, in
mydict["one"]
KeyError: 'one'
5、NameError
当尝试访问一个不存在的变量时,Python会抛出NameError
cccc
Traceback (most recent call last):
File "", line 1, in
cccc
NameError: name 'cccc' is not defined
6、SyntaxError
当遇到SyntaxError时代表Python语法错误
print cccc
File "", line 1
print cccc
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(cccc)?
7、TypeError
类型不同的对象是不能相互进行计算的,否则会抛出TypeError异常
1+"1"
Traceback (most recent call last):
File "", line 1, in
1+"1"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
8、ZeroDivisionError
除数为0会引发该异常
1/0
Traceback (most recent call last):
File "", line 1, in
1/0
ZeroDivisionError: division by zero
二、异常的处理
异常捕获可以使用try语句来实现,任何出现在try语句范围内的异常都会被捕获到,try语句有两种实现形式,一种是try-except;另一种是try-finally
1、try-except
针对不同异常设置多个except
try:
1+"1"
1/0
except ZeroDivisionError:
print("除数不能为0")
except TypeError:
print("类型错误")
对多个异常统一处理
try:
ccc
1/0
1+"1"
except (NameError,ZeroDivisionError,TypeError):
print("ERROR!")
捕获所有异常
try:
ccc
1/0
1+"1"
except:
print("ERROR!")
2、try-finally
finally语句块用以确保无论如何都将被执行的内容
3、raise
可以使用raise语句抛出一个异常
raise NameError
Traceback (most recent call last):
File "", line 1, in
raise NameError
也可以使用raise语句抛出一个带参数的异常
raise NameError("也可以使用raise语句抛出一个带参数的异常")
Traceback (most recent call last):
File "", line 1, in
raise NameError("也可以使用raise语句抛出一个带参数的异常")
NameError: 也可以使用raise语句抛出一个带参数的异常
4、else
如果try语句没有任何问题,则执行else里的内容
try:
int('1')
except ValueError:
print("出错了")
else:
print("没有任何问题")
5、with
参考书籍:
0基础入门学习Python(第2版) 小甲鱼 著