异常处理
python 用 异常对象(exception object)来表示异常情况。异常对象可以被处理、捕获,避免程序终止执行。
在编程过程中为了增加友好性,在程序出现Bug时一般不会直接将错误信息展示给用户,而是提供一个友好的输出提示。
基本形式
try:
正常的操作
......................
except:
发生异常,执行这块代码
......................
else:
如果没有异常执行这块代码
finally:
不管如何,最后一定要执行的代码
常见的异常类型
- 示例程序1:
Exception 所有异常的基类
AttributeError 特征引用或者赋值失败时引发的
IOError 试图打在不存在的文件(包括其他情况)
IndexError 使用序列中不存在的索引
KeyError 使用映射中不存在的键
NameError 找不到名字(变量)
SyntaxError 在代码为错误形式时引发
SystemExit 系统异常退出
TypeError 在内建操作或者函数应用与错误类型的对象时
ValueError 正确的类型对象,但是对象使用不合适的值
ZeroDivisionError 除法,第二参数为0
处理异常方法
#!/usr/bin/python
# -*- coding:utf-8 -*-
try:
msg = input(">>")
int(msg)
except Exception as e:
print("异常的类型是:%s"%type(e))
print("异常对象的内容是:%s"%e)
运行结果:
>>python
异常的类型是:<class 'ValueError'>
异常对象的内容是:invalid literal for int() with base 10: 'python'
Process finished with exit code 0
- 示例程序2:
#!/usr/bin/python
# -*- coding:utf-8 -*-
try:
1 + "python"
except Exception as e:
print("异常的类型是:%s"%type(e))
print("异常对象的内容是:%s"%e)
运行结果:
异常的类型是:<class 'TypeError'>
异常对象的内容是:unsupported operand type(s) for +: 'int' and 'str'
Process finished with exit code 0
Python3 要求我们的异常必须继承 Exception 类。Built-in 的所有异常也都是继承自这个类。因此,我们只需要捕获这个类的实例,就可以捕获所有的异常。