Python异常处理try...except...finally raise assert

本文详细介绍了Python中的异常处理机制,包括try...except的基本用法、finally子句的应用场景、raise语句如何抛出自定义异常,以及assert语句的正确使用方式。

异常处理:
try ...except  try代码块放置容易发生异常的语句:except代码块放置处理异常的语句
try ...except...finally finally代码快是任何时候都会执行的;通常用于关闭系统的资源

[python]  view plain  copy
 
  1. try:  
  2.     f = open('db100.txt','r')  
  3.     try:  
  4.         a = f.write('aa')  
  5.         print a   
  6.     except:  
  7.         print 'write error'  
  8.     finally:  
  9.         f.close()  
  10.         print 'close file'  
  11. except:  
  12.     print 'open error'  
  13. 输出:  
  14. write error  
  15. close file  





raise 抛出异常;


[python]  view plain  copy
 
  1. def reporterror(x):  
  2.     if x == None:  
  3.         raise NameError  
  4.     print x   
  5.   
  6.   
  7. try:  
  8.     reporterror(None)  
  9.   
  10.   
  11. except NameError:  
  12.     print 'x == None'  
  13. #输出:  
  14. x == None  





自定义异常:
必须继承于Exception类
类名以Error结尾
自定义异常使用raise语句引发,而且只能通过手工引发:
Python pass 语句
Python pass是空语句,是为了保持程序结构的完整性。

pass 不做任何事情,一般用做占位语句。

 

[python]  view plain  copy
 
  1. class MyError(Exception):    
  2.     pass  
  3.   
  4. def reporterror(x):  
  5.     if x == None:  
  6.         raise MyError()  
  7.     print x   
  8.      
  9. try:  
  10.     reporterror(None)  
  11.   
  12.   
  13. except MyError,error:  
  14.     print 'x == None'  
  15. #输出:  
  16. x == None  
  17. --------------------------------------  



assert:语句用于测试某个条件表达式为真,即认为测的表达式永远为真,如果断言失败,会引发AssertionError异常

[python]  view plain  copy
 
  1. str = 'hello'  
  2. try:  
  3.     #x = 10/0  
  4.     assert len(str) == 3  
  5. except AssertionError,x:  
  6.     print 'assert error',x  
  7. 输出:  
  8. assert error  

 

异常信息:

str = 'hello'

[python]  view plain  copy
 
  1. try:  
  2.     x = 10/0  
  3.     assert len(str) == 3  
  4. except AssertionError,x:  
  5.     print 'assert error',x  
  6. except Exception ,ex:  
  7.     print ex  
  8. 输出:  
  9. integer division or modulo by zero  



 

转载于:https://www.cnblogs.com/zknublx/p/7411731.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值