python异常简单使用方法

转载 2012年03月26日 17:23:57
1. try...except 
Python代码  收藏代码
  1. tommy@lab3:~$ python  
  2. Python 2.5.2 (r252:60911, Jan  4 200917:40:26)  
  3. [GCC 4.3.2] on linux2  
  4. Type "help""copyright""credits" or "license" for more information.  
  5. >>> 1/0  
  6. Traceback (most recent call last):  
  7.   File "<stdin>", line 1in <module>  
  8. ZeroDivisionError: integer division or modulo by zero  
  9. >>>  
  10. >>> try:  
  11. ...     1/0  
  12. ... except:  
  13. ...     print "do something..."  
  14. ...  
  15. do something...  
  16. >>>  


2. try...finally 

finally 里面只是执行完成try中的代码后,必须执行的代码, 
即使是 try中有异常抛出,也是会去执行finally 

Python代码  收藏代码
  1. >>> try:  
  2. ...     1/0  
  3. ... finally:  
  4. ...     print "I just finally do something ,eg: clear!"  
  5. ...  
  6. I just finally do something ,eg: clear!  
  7. Traceback (most recent call last):  
  8.   File "<stdin>", line 2in <module>  
  9. ZeroDivisionError: integer division or modulo by zero  
  10. >>>  


所以,一般情况下,finally里面执行的都是一些清理工作,比如:关闭文件描述符,释放锁等 

Python代码  收藏代码
  1. >>> try:  
  2. ...     fd=open("have-exists-file""r")  
  3. ...     print "do some thing ,read file ,write file..."  
  4. ... finally:  
  5. ...     fd.close()  
  6. ...  
  7. do some thing ,read file ,write file...  
  8. >>>  


多线程中,对锁的使用 

Python代码  收藏代码
  1. tommy@lab3:~$ python  
  2. Python 2.5.2 (r252:60911, Jan  4 200917:40:26)  
  3. [GCC 4.3.2] on linux2  
  4. Type "help""copyright""credits" or "license" for more information.  
  5. >>> import threading  
  6. >>> l_lock=threading.RLock()  
  7. >>> try:  
  8. ...     l_lock.acquire()  
  9. ...     print "do some thing."  
  10. ... finally:  
  11. ...     l_lock.release()  
  12. ...  
  13. True  
  14. do some thing.  
  15. >>>  



注意,finally中,如果出现异常,外部如果没有相应的捕获机制,该异常会层层抛出,直到最顶端,然后解释器停止 
一般我们会这样做 
Python代码  收藏代码
  1. >>> try:  
  2. ...     try:  
  3. ...         fd=open("no-exists-file""r")  
  4. ...         print "do some thing ,read file ,write file..."  
  5. ...     finally:  
  6. ...         fd.close()  
  7. ...except:  
  8. ...    print "catch finally exception."  
  9. do some thing ,read file ,write file...  
  10. >>>  


3. 封装了一个全局的捕获异常的函数(偶比较懒,就用了全部的捕获异常方法) 

Python代码  收藏代码
  1. import traceback  
  2. import sys  
  3. def trace_back():  
  4.     try:  
  5.         return traceback.print_exc()  
  6.     except:  
  7.         return ''  


http://www.iteye.com/topic/416890


Python代码  收藏代码
  1. try:  
  2.     do_something()  
  3. except:  
  4.     print trace_back()  

相关文章推荐

Python3中urllib详细使用方法(header,代理,超时,认证,异常处理)

 urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用...
  • willhuo
  • willhuo
  • 2015年11月30日 15:10
  • 577

emacs python-mode 及使用方法

  • 2010年11月30日 23:56
  • 473KB
  • 下载

Orika映射工具MapperFactory使用方法,及LocalDateTime转换异常

一、创建MapperFactory手动创建MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();spring...

异常抛出增强使用方法及案例

在说使用AOP面向切面编程的思想对代码段进行增强处理之前,先说两个理论知识点: —常用切入表达式模糊匹配解释: ①public * addUser(com.pb.entity.User): “*”...

c++中的异常处理定义和使用方法

异常处理:所谓异常处理就是指对运行时出现的差错以及其它例外情况的处理。C++中处理异常的机制由3部分组成:检查(try),抛出(throw),捕捉(catch)。650) this.width=650...

C++ - 虚函数(virtual function)缺省参数的异常表现 及 正确使用方法

虚函数(virtual function)缺省参数的异常表现 及 正确使用方法 本文地址: http://blog.csdn.net/caroline_wendy/article/details/...

C++中异常类的使用方法

C++有很多的标准异常类: namespace std {     //exception派生     class logic_error; //逻辑错误,在程序运行前可以检测出来    ...

java语言异常的使用方法和处理经验

异常处理的捕捉形式: 这是可以对异常进行针对性处理的方式。 具体格式是: try { //需要被检测异常的代码。 } catch(异常类 变量)//该变量用于接收发生的异常对象 {...

C++中异常类的使用方法

C++有很多的标准异常类: namespace std {     //exception派生     class logic_error; //逻辑错误,在程序运行前可以检测出来    ...

SVN使用方法简单总结

  • 2013年05月02日 20:05
  • 529KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python异常简单使用方法
举报原因:
原因补充:

(最多只允许输入30个字)