美文网首页
2018-10-08 Python21 异常、time模块

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

作者: 孟媛的笔记 | 来源:发表于2018-10-08 19:02 被阅读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
    --------------------------------------
    

    相关文章

      网友评论

          本文标题:2018-10-08 Python21 异常、time模块

          本文链接:https://www.haomeiwen.com/subject/sxwjaftx.html