我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

gis开发课上,老师说请不要使用各种各样的判断来做各种参数合法性检测。思路是:相信每个参数都是合法的,然后使用assert断言来阻断其中潜在的危险。那么,本文中主要学习的就是断言assert的使用,以及如何使用raise主动抛出异常。

苏南大叔个人觉得:还是写很多if比较好,这种assert会阻碍程序执行....

苏南大叔:python代码,如何使用assert断言及raise抛出异常? - assert异常
python代码,如何使用assert断言及raise抛出异常?(图6-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文主要使用两个python函数:assertraise。测试环境:win10python@3.6.8

assert函数

首先看看assert函数的help输出。

苏南大叔:python代码,如何使用assert断言及raise抛出异常? - assert-help
python代码,如何使用assert断言及raise抛出异常?(图6-2)

官方说明看起来有些多,苏南大叔觉得最基本的用法就是下面这样的:

assert 条件 , 条件失败的文字输出

苏南大叔:python代码,如何使用assert断言及raise抛出异常? - assert断言
python代码,如何使用assert断言及raise抛出异常?(图6-3)

测试代码:

a = 1
assert a <= 2, "条件1,校验失败"
assert a > 2, "条件2,校验失败"
print("continue")

这个代码中,这里的assert断言和普通的if之类的语句做对比的话,这里发生错误的话,就是fatal error级别的,异常名称为AssertionError

  • 第一个断言中,因为条件1通过,并没有被断下。
  • 第二个断言中,因为条件2没有通过,所以被断下输出设定的异常信息。
  • 同时最后一句continue因为已经被断下了,并没有被输出。

raise

苏南大叔:python代码,如何使用assert断言及raise抛出异常? - help-raise
python代码,如何使用assert断言及raise抛出异常?(图6-4)

raise的官方帮助说明,说明如下:

测试代码:

raise ZeroDivisionError('除数为0') 
raise TypeError 

苏南大叔:python代码,如何使用assert断言及raise抛出异常? - 异常抛出
python代码,如何使用assert断言及raise抛出异常?(图6-5)

如果主动抛出第一个例子中的断言异常的话,代码如下:

raise AssertionError('主动抛出的断言异常')

苏南大叔:python代码,如何使用assert断言及raise抛出异常? - 主动抛出的断言异常信息
python代码,如何使用assert断言及raise抛出异常?(图6-6)

相关链接

综述

本文使用assert进行断言,当条件不符合的时候会直接输出异常信息。当然,也可以使用raise函数直接抛出异常信息。不论是哪种异常信息,这种手动抛出的异常都会阻碍程序的运行,是个fatal error

更多经验文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python