在我们编写脚本或者进行软件开发过程中总会遇见很多的异常和错误,而Python里面有两个非常重要的功能,能够很好的处理异常和任何意外错误,这两个功能就是异常处理和断言。
异常处理:主要包含语法错误和其他的标准异常,标准异常介绍如下表。
断言:断言是一种理智检查,当程序的测试完成,你可以打开或关闭。断言的最简单的方法就是把它比作 raise-if 语句 (或者更准确,加 raise-if-not 声明). 一个表达式进行测试,如果结果出现 false,将引发异常。断言是由 assert 语句,在Python中新的关键字,在Python1.5版本中引入使用的关键字。
程序员常常放置断言来检查输入的有效,或在一个函数调用后检查有效的输出。
一、标准异常表
异常名称
描述Exception
所有异常的基类
StopIteration
当一个迭代器的 next()方法不指向任何对象时引发
SystemExit
由 sys.exit()函数引发
StandardError
除了StopIteration异常和SystemExit,所有内置异常的基类
ArithmeticError
数值计算所发生的所有错误的基类
OverflowError
当数字类型计算超过最高限额引发
FloatingPointError
当一个浮点运算失败时触发
ZeroDivisonError
当除运算或模零在所有数值类型运算时引发
AssertionError
断言语句失败的情况下引发
AttributeError
属性引用或赋值失败的情况下引发
EOFError
当从 input() 函数输入,到达文件末尾时触发
ImportError
当一个 import 语句失败时触发
KeyboardInterrupt
当用户中断程序执行,通常是通过按 Ctrl+c 引发
LookupError
所有查找错误基类
IndexError
KeyError
当在一个序列中没有找到一个索引时引发
当指定的键没有在字典中找到引发
NameError
当在局部或全局命名空间中找不到的标识引发
UnboundLocalError
EnvironmentError
试图访问在函数或方法的局部变量时引发,但没有值分配给它。
Python环境之外发生的所有异常的基类。
IOError
IOError
当一个输入/输出操作失败,如打印语句或 open()函数试图打开不存在的文件时引发
操作系统相关的错误时引发
SyntaxError
IndentationError
当在Python语法错误引发;
没有正确指定缩进引发。
SystemError
当解释器发现一个内部问题,但遇到此错误时,Python解释器不退出引发
SystemExit 当Python解释器不使用sys.exit()函数引发。如果代码没有被处理,解释器会退出。
当操作或函数在指定数据类型无效时引发
ValueError 在内置函数对于数据类型,参数的有效类型时引发,但是参数指定了无效值
RuntimeError
当生成的错误不属于任何类别时引发
NotImplementedError
当要在继承的类来实现,抽象方法实际上没有实现时引发此异常
异常示例:
1、FileNotFoundError
尝试打开文d:\\openstack.txt文件由于文件不存在就会报出FIleNotFoundError:
f=open("d:\\openstack.txt")
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
f=open("d:\\openstack.txt")
FileNotFoundError: [Errno 2] No such file or directory: 'd:\\openstack.txt'
2、ZeroDivisionError
除法运算或取模运算中,除数为零的情况
>>> 5/0
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
5/0
ZeroDivisionError: division by zero
3、ImportError
一般是在导入模块时,由于模块不存在等原因导致报错
>>> import wwww
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
import wwww
ImportError: No module named 'wwww'
4、ValueError
一般是由于传入参数的数据类型错误引起报错。
>>> a="sterc"
>>> int(a)
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
int(a)
ValueError: invalid literal for int() with base 10: 'sterc'
>>>