异常处理的目的是防止用户看到不友好的异常情况,避免程序异常退出
一.通过try...except...将异常截获,保证程序继续执行
try: open(‘test.txt‘,‘r‘) 1/0 except ZeroDivisionError,e: print e print ‘done‘
运行以上程序直接抛出异常如下,第2行之后的语句没有被执行,程序直接退出
>>>
Traceback (most recent call last):
File "D:\Python\code\test.py", line 2, in <module>
open(‘test.txt‘,‘r‘)
IOError: [Errno 2] No such file or directory: ‘test.txt‘
>>>
下面我们将try的两行语句互换位置再次运行
try: 1/0 open(‘test.txt‘,‘r‘) except ZeroDivisionError,e: print e print ‘done‘
>>>
integer division or modulo by zero
done
>>>
可以看出done被打印,异常情况被截获,保证了程序继续执行
二.finally子句:不管有无异常都执行,常用于文件关闭,释放数据库连接的操作
try: 1/1 except ZeroDivisionError,e: print e finally: print ‘done‘
>>>
done
>>>
程序没有异常依然打印出done
三.异常抛出raise子句:主动抛出异常给上一层,用于api错误提示处理,屏蔽底层异常等
try: 1/0 except Exception,e: print str(e) raise Exception(‘test raise‘)
>>>
integer division or modulo by zero
Traceback (most recent call last):
File "D:\Python\code\test.py", line 5, in <module>
raise Exception(‘test raise‘)
Exception: test raise
>>>
本文出自 “今日的努力,明日的成功!” 博客,请务必保留此出处http://zhzhgo.blog.51cto.com/10497096/1676922
原文地址:http://zhzhgo.blog.51cto.com/10497096/1676922