Python assert异常处理(一看即懂)
Python 还支持断言语法。在一套程序完成之前,编程者并不知道程序可能会在哪里报错,或是触发何种条件的报错,因此使用断言语法可以有效地做好异常检测,并适时触发和抛出异常。
Python 中使用 assert 语句声明断言,其语法为:
Python 首先检测表达式结果是否为 True,若为 True 则继续向下执行,否则将触发断言异常,并显示断言异常提示信息,后续代码捕获该异常并做进一步处理。例如:
可见,当 assert 语句判断的表达式结果为 False 时触发了断言异常,此时可以使用 try…except 语句捕获并做进一步处理,例如:
Python解释器内置的预定义标准异常如表 1 所示。
Python 中使用 assert 语句声明断言,其语法为:
assert 表达式 [, "断言异常提示信息"]
Python 首先检测表达式结果是否为 True,若为 True 则继续向下执行,否则将触发断言异常,并显示断言异常提示信息,后续代码捕获该异常并做进一步处理。例如:
def testAssert(x): assert x < 1,'无效值' print ("有效值") testAssert(1)上述代码的运行结果如下所示:
>>> def testAssert(x):
... assert x < 1,'无效值'
... print ("有效值")
>>> testAssert(1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
testAssert(1)
File "<stdin>", line 2, in testAssert
assert x < 1,'无效值'
AssertionError: 无效值
可见,当 assert 语句判断的表达式结果为 False 时触发了断言异常,此时可以使用 try…except 语句捕获并做进一步处理,例如:
def testAssert(x): assert x < 1, '无效值' print("有效值") try: testAssert(1) except Exception: print("捕获成功")上述代码的运行结果如下所示:
>>> def testAssert(x):
... assert x < 1, '无效值'
... print("有效值")
>>> try:
... testAssert(1)
... except Exception:
... print("捕获成功")
捕获成功
Python解释器内置的预定义标准异常如表 1 所示。
异常名称 | 描述 |
---|---|
ArithmeticError | 所有数值计算错误的基类 |
AssertionError | 断言语句失败 |
AttributeError | 对象无此属性 |
BaseException | 所有异常的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
EnvironmentError | 操作系统相关的错误的基类 |
EOFError | 到达文件尾(EOF, End-of-File)错误 |
Exception | 常规错误的基类 |
FloatingPointError | 浮点计算错误 |
FutureWarning | 关于将来语义会有改变的警告 |
GeneratorExit | 生成器发生异常通知退出 |
ImportError | 引入模块/对象失败 |
IndentationError | 缩进错误 |
IndexError | 序列中无此索引 |
IOError | 输入/输出操作失败 |
Keyboardlnterrupt | 用户中断执行 |
KeyError | 映射中无此键 |
LookupError | 无效数据查询的基类 |
MemoryError | 内存溢出错误 |
NameError | 未声明/初始化对象,名称调用错误 |
NotImplementedError | 尚未实现的方法 |
OSError | 操作系统错误 |
OverflowError | 数值运算超出最大限制 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
ReferenceError | 弱引用试图访问已经被回收的对象 |
RuntimeError | 一般运行时错误 |
RuntimeWarning | 运行时行为警告 |
StandardError | 所有内建标准异常的基类 |
StopIteration | 迭代器没有更多的值 |
SyntaxError | Python语法错误 |
SyntaxWarning | 语法警告 |
SystemError | 一般的解释器系统错误 |
SystemExit | 解释器请求退出 |
TabError | Tab和空格混用 |
TypeError | 对类型无效的操作 |
UnboundLocalError | 访问未初始化的本地变量 |
UnicodeDecodeError | Unicode解码错误 |
UnicodeEncodeError | Unicode编码错误 |
UnicodeError | Unicode相关错误 |
UnicodeTranslateError | Unicode转换错误 |
UserWarning | 用户代码生成的警告 |
ValueError | 传入无效参数 |
Warning | 各种警告的基类 |
WindowsError | 系统调用失败 |
ZeroDivisionError | 除(或取模)零错误 |
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算