第十二章 异常

Python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误:异常、断言

异常处理

异常即是一个事件(在Python中是一个对象),该事件会在Python无法正常处理程序时就会发生,影响了程序的正常执行。每个错误都有名称,当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。

以下是完整的try语句结构,try语句可以嵌套,try中定义的变量可以在函数其他地方使用。

try: # 需要捕获异常的代码块

block

except exception: # 有多种形式

block

else: # 没有异常执行的语句块

block

finally: # 无论是否发生异常都将执行的语句块

block

try中包含的代码块,如果执行出错,则后续代码不会继续执行,而是直接跳转至错误处理代码。如果错误代码没有使用try捕获,或者捕获的错误在 except列表没有相应的处理,它就会一直往上抛,最后被Python解释器捕获,打印一个错误信息,然后程序退出。

except列表,其中[, Argument] 可以替换为 [as Argument],支持[,语法]与[as语法]。

1、except:

捕获所有的异常

2、except ExceptionType[, Argument]: 或 except (ExceptType1, ExceptType2, …), Argument/as Argument

捕捉指定的异常,Argument表示异常实例,携带异常信息,Argument.message

3、except(Exception1[, Exception2[,…ExceptionN]]])[, Argument]:

一次捕获列表中的多种异常

触发异常

当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。

raise [ExceptionType [, args [, traceback]]]

或者

raise ExceptionType(args) #使用异常类的构造函数创建一个异常对象

1、raise

将拦截到的异常错误原样抛出扔给上层处理

2、参数解释

ExceptionType:异常的类型(例如,NameError)

args:参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是”None”。

traceback:最后一个参数是可选的,traceback,未提供则是None

自定义异常

通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。

在Python已知的类不满足的时候,可以定义一个自定义异常类:

class NewException(Exception):

pass

断言

Python中使用 assert 来使用断言,起到调试的作用。启动Python解释器携带 -O 参数可以关闭断言。

assert expression # 如果 expression 为False, 则触发一个 AssertionError 异常

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注