异常处理

前言:

在设计程序的过程中,难免会遇到不可预料的情况,入内存溢出,网络中断,数据类型错误等等,程序运行会抛出异常。这个时候

需要对异常进行捕获和处理。

 

一、捕获异常的语法:

try:
    """可能发生错误或异常的代码块"""
    pass
except () as e:
    """发生异常后执行的代码块,通常为异常的捕获"""
    pass
...
else: """未发生异常执行的代码块""" pass finally: """无论是否发生异常,均为执行的代码块""" pass

 

二、except:

1,except后面可以是单个异常类型,也可以是多个异常类型,多个异常类型时用放在括号中。

2,except后可以时具体的异常类型,也可以直接是Exception。

3,except可以有多个。

 

try报错时:

try:
    a = 1 / 0
except ZeroDivisionError as e:
    print(e)
else:
    print("else")
finally:
    print("finally")

打印结果:

division by zero
finally

我们可以看到,try中的代码报错了,则会执行except中的代码。

 

try未报错时:

try:
    a = 1 / 0
except NameError as e:
    print(e)
except ZeroDivisionError as e:
    print(e)
else:
    print("else")
finally:
    print("finally")

执行结果:

else
finally

我们可以看到,try未报错时,except未执行,else被执行。

 

无论如何,finally的代码块都会被执行。

 

多个except:

try:
    a = 1 / 0
except NameError as e:
    print(e)
except ZeroDivisionError as e:
    print(e)
except ValueError as e:
    print(e)
else:
    print("else")
finally:
    print("finally")

执行结果:

division by zero
finally

我们可以看到,即使有多个except,也只会匹配执行符合的except。

其实,我们可以将多个报错类型放在一个except中

try:
    a = 1 / 0
except (NameError, ZeroDivisionError, ValueError) as e:
    print(e)
else:
    print("else")
finally:
    print("finally")

执行的效果和上面是一样的。

 

Exception异常:

Exception异常是所有异常的父类,当不知道会报什么异常时,可以使用Exception。

 

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

典型场景:

数据库连接过程中,若报错了,则需要捕获异常,否则需要进行连接,无论是否连接与否都需要进行一遍数据库连接断开操作,以防数据丢失,超连接数等问题。

posted @ 2022-03-15 16:11  Target_L  阅读(90)  评论(0)    收藏  举报