try...except
有时候我们写程序的时候,会出现一些错误或异常,导致程序终止。例如,做除法时,除法为0,会引发一个
ZeroDivisionError
a=10
b=0
try:
c=a/b
print c
except ZeroDivisionError ,e:
print e.message
print "done"
我们把可能发生错误的语句放在try模块里,用except来处理异常。except可以处理一个专门的异常,也可以处理一组圆括号中的异常,如果except后
没有指定异常,则默认处理所有的异常。每一个try,都必须至少有一个except
处理一组异常可以这样写(其中e代表异常的实例):
try:
pass
except (IOError, ZeroDivisionError) ,e:
print e
try ......except....else 语句,当没有异常发生时,else中的语句将会被执行。
例子:
a = 10
b = 0
try:
c = b/a/b
print c
except (IOError , ZeroDivisionError),x:
print x
else:
print ("no error")
print "done"
二、raise 引发一个异常
例子:如果输入的数据不是整数,则引发一个ValueError
inputValue = input("please input a int data:")
if type(inputValue)!=type(1)
raise ValueError
else:
print (inputValue)
三、try。。。finally
无论异常是否发生,在程序结束前,finally中的语句都会被执行
a = 10
b =0
try:
print a/b
except:
print "error"
finally:
print "always excute"
四、自定义一个异常类
这个自定义
五、python所有的标准异常类:
异常名称
描述
BaseException (所有异常的基类(父类))
SystemExit (解释器请求退出)
KeyboardInterrupt (用户中断执行(通常是输入^c))
Exception (常规错误的基类)
Stoplteration (迭代器没有更多的值)
GeneratorExit (生成器(generator)发生异常来通知退出)
SystemExit (python解释器请求退出)
StandardError (所有的内建标准异常的基类)
ArithemticError (所有数值计算错误的基类)
FloatingPointError (浮点计算错误)
OverflowError (数值运算超出最大限制)
ZeroDivisionError 除(或取模)零(所有数据类型)
AssertionError (断言语句失败)
AttributeError(对象没有这个属性)
EoFError (没有内建输入,到达EoF标记)
EnvironmentError (操作系统错误的基类)
IOError (输入/输出操作失败)
OSError (操作系统错误)
windowsError (系统调用失败)
ImportError (导入模块/对象失败)
LookupError (无效数据查询的基类)
IndexError (序列中没有此索引(index))
KeyError (映射中没有这个建)
MemoryError (内存溢出错误(对于python解释器不是致命的))
NameError (未声明/初始化对象(没有属性))
UnboundLocalError (访问未初始化的本地变量)
ReferenceError (弱引用(weak reference)试图访问已经垃圾回收了的对象)
RuntimeError (一般的运行时错误)
SyntaxError (python 语法错误)
TypeError (对类型无效的操作)
ValueError (传入无效的参数)
SyntaxWarning (可疑的语法的警告)