1. 编程学习网 > 编程教程 > Python教程 > python自定义异常与断言

python自定义异常与断言

自定义异常与断言

1.自定义异常

我们之前遇到的异常都是python给我们设定好的,如果不够用,我们还可以自定义一个异常类。
在自定义异常类时需要继承BaseExpection的子类Exception,命名时以Error结束,目的是和官方给的类统一,然后使用raise关键字主动将其抛出。

运行程序:
请输入月份:13
Traceback (most recent call last):
  File "c:\Users\Lenovo\Desktop\spider\新建文件夹\a.py", line 11, in <module>
    raise MonthError()
__main__.MonthError: 月份错误
 
上例中我们自定义了一个异常类,它表示月份异常,类里继承了父类的构造函数,重写了__str__方法,目的是让它输出错误提示信息。
在主程序里要求用户输入一个月份,如果月份在1-12之间,表示输入合法,将输入的月份输出,如果不合法,就主动抛出该异常。
在输出结果的报错信息里可以看到我们自定义的这个异常类MonthError。
当然我们可以对这个例子进行改进。

这里我们在构造函数里增加了一个参数info,在返回异常信息时,将它一并输出。然后在抛出异常的外面增加了一套try-except针对这个自定义的异常类进行处理:首先输出这个异常信息,然后提示用户应该输入正确范围的月份。
 
程序执行结果如下:
请输入月份:13
13,月份错误
请输入1-12之间的月份!

2.断言

断言关键字assert,其后需要跟一个表达式,如果表达式为假,则会抛出一个异常AssertionError。
断言很容易理解,和我们汉语几乎无异。就是说我断定这个表达式是真的,如果这个表达式为真,则断言成立,否则断言失败,就会抛出异常。


运行结果:
Traceback (most recent call last):
  File "text.py", line 2, in <module>
    assert False
AssertionError
    
上述代码第一行是没有问题的,第二行会才回报出AssertionError异常。
 
断言的具体作用还要看下例。

上述代码中的fun方法需要传入一个大于0的数,我们用assert断言需要传入的参数num是大于0的,如果不传入的数不合法,就会出现异常。
 
断言的应用可以做防御性的编程,当我们不希望某个变量越过某一范围时可以使用断言。也可以用来检查程序,比如判断常量,合约性检查(比如前置条件或者后置条件等)。

本文由IT教学网整理发布,转载请注明出处:http://www.itjx.com/jiaocheng/Python/2020/0118/544.html

联系我们

在线咨询:点击这里给我发消息

咨询电话:400-998-2681

工作时间:7*24小时无休