异常

异常处理语句

try ... except 语句

格式如下:

1
2
3
4
try:
block1
except [ExceptionName [as alias]]:
block2

执行 try1 块,发生异常则执行 except 块。

try ... except ... else 语句

格式如下:

1
2
3
4
5
6
try:
block1
except [ExceptionName [as alias]]:
block2
else:
block3

发生异常时,没有匹配的异常,则执行 else 语句块。

try ... except ... finally 语句

格式如下:

1
2
3
4
5
6
try:
block1
except [ExceptionName [as alias]]:
block2
finally:
block3

不管有没有发生异常,finally 块都会执行

抛出异常

使用 raise 语句抛出异常。语法如下:

1
raise [ExceptionName[(reason)]]

assert 断言

语法格式如下:

1
assert 表达式 [,reason]

表达式为返回 bool 的条件表达式。

  • 如果值为 True,则什么都不做。
  • 如果值为 Fasle,则抛出 AssertionError 异常。

常见异常

异常 说明
ZeroDivisionError 除 0 异常
NameError 访问没有声明的变量
IndexError 超出序列范围访问
ValueError 传入值错误
IndentationError 缩进错误
KeyError 字典key不存在
IOError 输入输出错误
ImportError 导入模块错误
TypeError 类型不合适错误
AttributeError 访问未知的对象属性错误
MemoryError 内存不足