2018-10-08 Python21 异常、time模块

2018-10-08  本文已影响0人  孟媛的笔记

异常处理-基本功能:

Python3用元祖接收多个异常,Python2不用写圆括号。
Python3用基类捕获所有异常,Python2不用写异常名即捕获所有异常。
Exception是异常的基类。

  1 import time
  2 
  3 try:
  4     time.sleep(2)
  5     11/0
  6     open("111.txt", "r")
  7     #print(num)
  8     print("上一句出错,这一句是不会打印的。")
  9 except (FileNotFoundError,NameError):
 10     print("你出错了。")
 11 except Exception as e:   #Exception是异常的基类
 12     print("如果上面的异常类型不足以捕获异常,那么就会被我捕获。")
 13     print(e)
 14     if str(e).find("division") != -1:
 15         print("-----------重新抛出,异常信息如下:-----------")
 16         raise  #手动抛出异常
 17 
 18 else:
 19     print("没有异常才会执行。")
 20 finally:
 21     print("不管上面的代码有没有产生异常,我都会执行。如果重新抛出异常:那么会先
    执行我,才会打印抛出的异常堆栈信息,然后程序终止。")
 22 
 23 
 24 print("如果前面不抛异常,或者异常被捕获了,我就会打印的。")

运行:

如果上面的异常类型不足以捕获异常,那么就会被我捕获。
division by zero
-----------重新抛出,异常信息如下:-----------
不管上面的代码有没有产生异常,我都会执行。如果重新抛出异常:那么会先执行我,再打印抛出的异常堆栈信息,再终止程序。
Traceback (most recent call last):
  File "20except.py", line 5, in <module>
    11/0
ZeroDivisionError: division by zero

 


 

抛出自定义异常:

  1 class CustomException(Exception):    #自定义异常
  2     def __init__(self, actual, expect):
  3         self.actual = actual
  4         self.expect = expect
  5 
  6     def __str__(self):
  7         str = "--------------------------------------\n"
  8         str += "自定义异常: \n"
  9         str += "\t\t期望值 %s, 实际值 %s"%(self.expect, self.actual)
 10         str += "\n--------------------------------------"
 11         return str
 12 
 13 
 14 
 15 def main():
 16     try:
 17         act = input("请输入实际值:")
 18         exp = "5"
 19         if act != exp:
 20             raise CustomException(act,exp)
 21     except CustomException as e:
 22         print(e)
 23     else:
 24         print("期望值%s = 实际值%s"%(exp, act))
 25 
 26 
 27 
 28 
 29 #程序开始       
 30 main()

运行:

mm@mm-virtual-machine:~/桌面$ python3 CustomException.py
请输入实际值:5
期望值5 = 实际值5

mm@mm-virtual-machine:~/桌面$ python3 CustomException.py
请输入实际值:3
--------------------------------------
自定义异常: 
        期望值 5, 实际值 3
--------------------------------------
上一篇下一篇

猜你喜欢

热点阅读