异常(Exception)指的是运行期间检测到的错误被称为异常。
为了让我们的程序在运行过程中,遇到一些“问题”(可以预知,但不能无视)的时候,仍然能够根据问题进行处理,让程序能够继续的运行下去。
场景:
面对用户输入被除数为0,是程序崩溃、终止?还是给出用户提示,让程序继续运行。
用户输入错误,就是“异常”,我们对这样的情况进行处理,就是“异常处理”。
案例:

a = input("请输入一个整数:")
print(int(a))

n = input("请输入被除数:")
m = input("请输入除数:")
res = float(n)/float(m)
print("res:", res)

上述代码在用户输入不同内容时,会产生不同的错误提示:

  • 用户输入的不是数字,无法计算,例如:a,b。错误类型是:ValueError: could not convert string to float
  • 用户输入的除数是0。错误类型是:ZeroDivisionError: float division by zero

可以通过充分的条件判断,让程序继续运行。

捕获异常

try ... except ...

语法:

try:
    可能产生异常的代码
except [错误类型]:
    产生错误时的处理方法

示例:

try:
    print('----test1----')
    open('123.txt', 'r')
    print('----test2----')
except IOError:
    pass

说明:

  • 此程序看不到任何错误,因为用except捕获到了IOError异常,并添加了处理的方法
  • pass表示实现了相应的实现,但什么也不做,如果把pass改为print语句,那么就会输出其他信息

捕获多个异常

语法:

try:
    可能产生异常的代码
except (错误类型1, 错误类型2, ...):
    产生错误时的处理方法

# 如果对于不同的异常进行不同的处理,可以使用多个except语句

try:
    可能产生异常的代码
except 错误类型1:
    产生错误1时的处理方法
except 错误类型2:
    产生错误2时的处理方法
...

获取异常的信息描述

捕获所有异常

try ... except ... else ... finally ...

嵌套的异常处理

异常类型

星霜荏苒 居诸不息