异常

try:
    f = open("file.txt","r")
except IOError as e:
    print e
except Exception as e
    error_log.write('An error occurred :%s\n' % e)
else:      #else必须跟在一个except子句后面,如果try代码块中的代码没有引发异常,就会执行else子句中的代码
    date = f.read()
    f.close()
finally:
    f.close()  #无论前面发生什么,最后都会关闭f

当出现IOError,程序停止执行try中的语句,并寻找可匹配该异常的except子句。如果找到,错误的详细信息储存在e中,控制权被传递给except代码块中的代码.执行完except子句,控制权回到try中出现异常语句后面的第一条语句。
raise语句用于手工引发异常,引发异常时,可以使用任意一个内置异常。
raise RuntimeError("meet wrong")

内置异常

BaseException
GeneratorExit
SystemExit
Exception
StandrdError
...
只要在except子句中指定一个特定组的名称,就可以捕捉该组中所有的异常

定义新异常

所有内置异常都使用类进行定义。要创建新异常,就定义父类为Exception的新类,例如:
class NetworkError(Exception):pass
可通过如下方式使用这个新异常:
raise NetworkError("cant find network")

 posted on 2017-09-22 09:36  letryalpha  阅读(52)  评论(0)    收藏  举报