TRY······EXCEPT
python
这个语句主要是捕获异常,在python中的运行过程主要是:出现异常时,python将中止try中的语句进行,就爱那个异常传递给except子句,寻找可匹配的except子句,若是找到,将作except 组下面的处理,而后处理完成后再将控制权交给try,进行处理。进行这样反复操做。以下:
ui
try: open('aaa.txt') except IOError as e: pass
另外,TRY······EXCEPT 能够加修饰语句,如:except Exception as var,若是出现异常将为变量提供 raise语句异常类型的实例。异常处理程序能够处理该值,并得到更多关于异常的信息。except 能够指定多个异常代码处理模块,如:
spa
try: #do somethong except IOError as e: #处理I/O错误 except TypeError as e: #处理类型错误 except NameError as e: #处理名称错误 error_log.write('An error occeurred : %s \n ' % e)
另一种方式:
code
try: #do somethong except (IOError,TypeError NameError ) as e: #处理错误 error_log.write('An error occeurred : %s \n ' % e)
使用Exception能够捕捉除了与程序退出相关异常以外的全部异常,如:
it
try: #do somethong except (IOError,TypeError NameError ) as e: #处理错误 error_log.write('An error occeurred : %s \n ' % e)
TRY······EXCEPT······ELSE
try语句也支持else语句,可是else子句必须跟在最后一个except子句后面,若是try中的代码未引起异常,则会执行else中的代码。如:
io
try: f=open('foo.txt','r') except IOError as e: error_log.write('An error occeurred : %s \n ' % e) else : data=f.read() f.close()
TRY······EXCEPT ······FINALLY
class
f=open('foo.txt','r') try: #进行一些处理 finally: data=f.close() #不管发生什么,都会关闭文件
finally子句不是用于捕获异常,而是用于提供一些代码,不管出现什么错误都会执行该代码。若是出现异常,控制权首先交给 finally,而后执行完毕后,将从新引起的异常交给另外的异常处理程序。若是未出现异常,try子句的代码完毕后,当即执行finally子句中的代 码。
自定义异常
require
class LengthRequiredException(Exception): def __init__(self,length,minLength): Exception.__init__(self) self.length = length self.minLength = minLength
引起自定义的异常
变量
l = [1,2,3,4,5] minLength = 6 try: raise LengthRequiredException(len(l),minLength) except IndexError: print("index out of bounds") except LengthRequiredException as e: print("Length not fit :length is %d required %d" %(e.length,e.minLength)) else: print("no exception was raised") finally: print("finally will be execute")