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

时间:2022-12-15 13:45:13

异常处理:
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