python异常处理的else和finally子句

python的异常处理当中,除了try...except...这样的基本结构之外,还有另外两个子句,分别是else和finally,功能不同。


异常处理else子句

try...except...else模式的异常处理中,else必须写在except之后,而且,只有当try里的代码正常执行,没有发生任何异常,才能执行else,否则执行except里的代码,并跳过else,实例如下:

def exception():
    try:
        print('如果这里没有发生异常,则执行else子句。')
    except NameError as err_N:
        print('try里的异常被这里捕捉!')
    else:
        print('try里面没有发生异常。')
        
exception()

代码输出:
如果这里没有发生异常,则执行else子句。
try里面没有发生异常。
 
#现在讲try...except...else进行一番修改,如下:
def exception():
    try:
        print(something)
    except NameError as err_N:
        print('try里的异常被这里捕捉!')
    else:
        print('try里面没有发生异常。')
    print('可见,try发生异常,则else就被跳过了')
exception()

代码输出:
try里的异常被这里捕捉!
可见,try发生异常,则else就被跳过了

异常处理finally子句

try...except...(else...)finally...的异常处理模式当中,不管try里是否发生异常,也不管except是否被正确捕捉,finally子句都能被执行,括号中的else可有可无。

def exception():
    try:
        print(1)
    except NameError as err_N:
        print('try里的异常被这里捕捉!')
    else:
        print('try里面没有发生异常。')
    finally:
        print('无论异常是否发生,也无论except是否将异常捕捉,finally都能被执行')
    
exception()

代码输出:
1
try里面没有发生异常。
无论异常是否发生,也无论except是否将异常捕捉,finally都能被执行

下一章节,我们将继续介绍python异常处理主动抛出异常的语法和一些可供查询的异常类。


全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.