异常处理
前言:
在设计程序的过程中,难免会遇到不可预料的情况,入内存溢出,网络中断,数据类型错误等等,程序运行会抛出异常。这个时候
需要对异常进行捕获和处理。
一、捕获异常的语法:
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:
典型场景:
数据库连接过程中,若报错了,则需要捕获异常,否则需要进行连接,无论是否连接与否都需要进行一遍数据库连接断开操作,以防数据丢失,超连接数等问题。
浙公网安备 33010602011771号