Python3 错误和异常-(try/except/else/finally/raise/assert)
一、异常处理
来个总的图例子:
以下实例中 finally 语句无论异常是否发生都会执行:
二、抛出异常
Python 使用 raise 语句抛出一个指定的异常。
raise语法格式如下:
raise [Exception [, args [, traceback]]]
第一个参数someException是触发异常的名称,异常名称是Python提供的标准异常中的任何一种;
第二个参数args是可选的,args可以是一个元组,也可以是单独的字符串。大多数情况下,单一的字符串用来指示错误发生的原因。如果传的是元组,通常的组成是一个错误字符串、一个错误编号、一个处理错误的函数地址等;
第三个参数是一个traceback对象,它也是可选的,实际上这个参数很少使用,主要是用于跟踪错误记录。
使用raise语句可以主动抛出异常,用于处理因一些因用户错误操作和输入而产生的问题。Python提供的标准异常有可能不满足程序一些特定的异常处理需求。例如用户操作和输入错误的一些异常。在这种情况下,可以创建自己的异常。
新创建的异常需要继承于标准异常的基类或子类,这里可能会涉及到类的概念,关于类的概念,我们会在后面的章节予以介绍。下面是一个新建异常的例子。
上面的代码新建了一个CustomError异常类,CustomError异常类继承于Python标准异常的Exception类。在下面的代码中,我们修改前面用户登录判断的案例代码,并使用自己新建的CustomError异常来处理问题。
三、Python3 assert(断言)
Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。
断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况,例如我们的代码只能在 Linux 系统下运行,可以先判断当前系统是否符合条件。
python assert 断言句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助
python assert断言的作用
python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达式为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常。
语法格式如下:
assert expression
等价于:
if not expression:
raise AssertionError
assert 后面也可以紧跟参数:
assert expression [, arguments]
等价于:
if not expression:
raise AssertionError(arguments)
https://www.runoob.com/python3/python3-errors-execptions.html