浏览 46101 次
锁定老帖子 主题:python异常捕获try except
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-06-29
最后修改:2009-07-10
下面就python的异常,几点小小的讨论 1. try...except tommy@lab3:~$ python Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> 1/0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero >>> >>> try: ... 1/0 ... except: ... print "do something..." ... do something... >>> 2. try...finally finally 里面只是执行完成try中的代码后,必须执行的代码, 即使是 try中有异常抛出,也是会去执行finally >>> try: ... 1/0 ... finally: ... print "I just finally do something ,eg: clear!" ... I just finally do something ,eg: clear! Traceback (most recent call last): File "<stdin>", line 2, in <module> ZeroDivisionError: integer division or modulo by zero >>> 所以,一般情况下,finally里面执行的都是一些清理工作,比如:关闭文件描述符,释放锁等 >>> try: ... fd=open("have-exists-file", "r") ... print "do some thing ,read file ,write file..." ... finally: ... fd.close() ... do some thing ,read file ,write file... >>> 多线程中,对锁的使用 tommy@lab3:~$ python Python 2.5.2 (r252:60911, Jan 4 2009, 17:40:26) [GCC 4.3.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import threading >>> l_lock=threading.RLock() >>> try: ... l_lock.acquire() ... print "do some thing." ... finally: ... l_lock.release() ... True do some thing. >>> 注意,finally中,如果出现异常,外部如果没有相应的捕获机制,该异常会层层抛出,直到最顶端,然后解释器停止 一般我们会这样做 >>> try: ... try: ... fd=open("no-exists-file", "r") ... print "do some thing ,read file ,write file..." ... finally: ... fd.close() ...except: ... print "catch finally exception." do some thing ,read file ,write file... >>> 3. 封装了一个全局的捕获异常的函数(偶比较懒,就用了全部的捕获异常方法) import traceback import sys def trace_back(): try: return traceback.print_exc() except: return '' 具体使用 try: do_something() except: print trace_back() 写的比较散,主要是想说说,python异常的简单使用,已经封装的一个简单的获得异常发生时,全局保持的异常信息(可能不准确,但基本够用) 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |