Python 第十三节 异常

一.异常和异常处理

异常在执行中断后会以信息的形式打印在终端给与提示,以调用栈的形式显示具体信息
我们写程序的过程中, 终归会有考虑不到或者出乎意料的地方, 对此, 为了保证程序遇到异常, 仍能继续执行下去, 则就要用到异常处理
异常处理的逻辑如下:

try:
    代码块1
except 异常类别1:
    异常处理代码块1
except 异常类别2:
    异常处理代码块2
except: 异常处理代码块3
else:
    代码块2

具体过程如下:
1.执行代码块1(代码块1是正常的程序逻辑, 即我们要实现的部分)
2.如果并没有触发异常, 则执行完代码块1就结束, except部分忽略
3.否则, 从代码块1触发异常的位置起,停止后续代码块1的执行。触发的异常会去匹配后面的异常分支(触发的异常会有一个名称, 比方说除数为0的异常叫做ZeroDivisionError), 进而去执行对应的分支内的异常处理逻辑。等执行完异常逻辑处理, 再转而继续执行代码块1剩下的部分。
4.如果未找到对应的except分支, 那么异常会抛给上层的try对应的异常处理。
5.如果完全无异常, 则会继续执行else分支(else分支可选, 其目的是将try内的代码块拆分得更细)

举一个简单的例子:

def FunTest(xx, yy):
    print(xx/yy)
if __name__ == '__main__':
    aa = 10;
    bb = 0;
    try :
        FunTest(aa, bb)
    except Exception:
        print("异常, 为程序的能够不报错, 返回值 :", 0)
    else:
        print('如果看到这句话, 证明为触发异常')

执行结果如下:

还有try...finally...
还有一部分用户自定义异常