成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇文章帶你弄懂Python異常傳遞和自定義異常

開發 后端
本文基于Python基礎,詳細的講解了運行過程中遇到各種異常,應該采取什么樣的處理方式,對各種異常提供有效的解決方案。通過一個個小項目實際操作,運行結果展示,能夠更好的解決問題。

[[406446]]

大家好,我是Go進階者,今天給大家分享一些Python基礎 (異常傳遞和自定義異常),上篇文章有說到:一篇文章帶你弄懂Python異常簡介和案例分析,這篇文章一起來看看異常其他知識吧~

一、異常的傳遞

1. try嵌套中

  1. import time 
  2.  
  3. try: 
  4.     f = open('test.txt'
  5.     try: 
  6.         while True
  7.             content = f.readline() 
  8.             if len(content) == 0: 
  9.                 break 
  10.             time.sleep(2) 
  11.     finally: 
  12.         f.close() 
  13.         print('關閉文件'
  14. except : 
  15.    print("沒有這個文件"
  16. finally: 
  17.     print("最后的finally"
  18.  
  19. # 這是test.txt文件中讀取到信息 

運行結果:

2. 函數嵌套調用中

  1. def test1(): 
  2.      print("----test1-1----"
  3.      print(num) 
  4.      print("----test1-2----"
  5.  
  6.  
  7.  def test2(): 
  8.      print("----test2-1----"
  9.      test1() 
  10.      print("----test2-2----"
  11.  
  12.  
  13.  def test3(): 
  14.      try: 
  15.          print("----test3-1----"
  16.          test1() 
  17.          print("----test3-2----"
  18.      except Exception as result: 
  19.          print("捕獲到了異常,信息是:%s"%result) 
  20.  
  21.      print("----test3-2----"
  22.  
  23.  
  24.  test3() 
  25.  print("------華麗的分割線-----"
  26.  test2() 

運行結果:

小總結:

如果try嵌套,那么如果里面的try沒有捕獲到這個異常,那么外面的try會接收到這個異常,然后進行處理,如果外邊的try依然沒有捕獲到,那么再進行傳遞。

如果一個異常是在一個函數中產生的,例如函數A---->函數B---->函數C,而異常是在函數C中產生的,那么如果函數C中沒有對這個異常進行處理,那么這個異常會傳遞到函數B中,如果函數B有異常處理那么就會按照函數B的處理方式進行執行;如果函數B也沒有異常處理,那么這個異常會繼續傳遞,以此類推。。。如果所有的函數都沒有處理,那么此時就會進行異常的默認處理。

二、拋出自定義的異常

你可以用raise語句來引發一個異常。異常/錯誤對象必須有一個名字,且它們應是Error或Exception類的子類

下面是一個引發異常的例子:

  1. class ShortInputException(Exception): 
  2.     '''自定義的異常類''' 
  3.     def __init__(self, length, atleast): 
  4.         #super().__init__() 
  5.         self.length = length 
  6.         self.atleast = atleast 
  7.  
  8. def main(): 
  9.     try: 
  10.         s = input('請輸入 --> '
  11.         if len(s) < 3: 
  12.             # raise引發一個你定義的異常 
  13.             raise ShortInputException(len(s), 3) #自定義異常長度為3。 
  14.              
  15.     except ShortInputException as result:#x這個變量被綁定到了錯誤的實例 
  16.        
  17.         print('ShortInputException: 輸入的長度是 %d,長度至少應是 %d'% (result.length, result.atleast)) 
  18.     else
  19.         print('沒有異常發生.'
  20.  
  21. main() 

運行結果:


以上程序中,關于#super().init()代碼的說明:

這一行代碼,可以調用也可以不調用,建議調用。

因為__init__方法往往是用來對創建完的對象進行初始化工作,如果在子類中重寫了父類的__init__方法,即意味著父類中的很多初始化工作沒有做,這樣就不保證程序的穩定了,所以在以后的開發中,如果重寫了父類的__init__方法,最好是先調用父類的這個方法,然后再添加自己的功能。

三、異常處理中拋出異常

  1. class Test(object): 
  2.     def __init__(self, switch): 
  3.         self.switch = switch #開關 
  4.     def calc(self, a, b): 
  5.         try: 
  6.             return a/b 
  7.         except Exception as result: 
  8.             if self.switch: 
  9.                 print("捕獲開啟,已經捕獲到了異常,信息如下:"
  10.                 print(result) 
  11.             else
  12.                 #重新拋出這個異常,此時就不會被這個異常處理給捕獲到,從而觸發默認的異常處理 
  13.                 raise 
  14.  
  15. a = Test(True
  16.  
  17. a.calc(11,0) 
  18.  
  19. print("----------------------華麗的分割線----------------"
  20.  
  21. a.switch = False 
  22. a.calc(11,0) 

運行結果:

四、總結

本文基于Python基礎,詳細的講解了運行過程中遇到各種異常,應該采取什么樣的處理方式,對各種異常提供有效的解決方案。通過一個個小項目實際操作,運行結果展示,能夠更好的解決問題。希望可以幫助你更好的學習Python。

 

責任編輯:姜華 來源: Go語言進階學習
相關推薦

2024-11-27 16:38:07

2021-06-16 10:03:37

Python案例分析Python基礎

2022-05-30 18:18:23

NoSQL數據庫

2024-12-26 16:49:20

Python字典元素

2021-06-30 10:01:09

Python字典代碼

2021-06-26 09:40:09

Python列表循環

2021-07-03 10:02:30

Python字符串瀏覽器

2023-06-15 10:11:08

JavaScript函數表達式

2018-10-22 12:50:20

CDN網絡內容發布網絡

2021-05-15 09:18:04

Python進程

2022-02-21 09:44:45

Git開源分布式

2023-05-12 08:19:12

Netty程序框架

2021-06-30 00:20:12

Hangfire.NET平臺

2024-05-10 13:46:36

Python進制

2021-06-05 10:02:15

Python進制數據類型

2021-06-09 09:00:11

Python數據類型基礎

2018-04-09 16:35:10

數據庫MySQLInnoDB

2021-01-07 11:10:47

關鍵字

2021-05-15 10:16:14

Python匿名函數

2024-04-17 13:21:02

Python匿名函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久最新精品视频 | 第一区在线观看免费国语入口 | 中文字幕精品一区久久久久 | 国产精品美女久久久久aⅴ国产馆 | 欧美精品国产一区二区 | 成人午夜在线观看 | 精品久久香蕉国产线看观看亚洲 | 日韩在线精品 | 中文字幕精品一区二区三区精品 | 精品九九| 视频一区二区三区四区五区 | 一级黄色毛片免费 | 国产专区在线 | 欧美日韩精品久久久免费观看 | 日韩欧美一区二区三区免费观看 | 亚洲成人一区 | 日韩波多野结衣 | 视频在线一区二区 | 黑人性hd | 欧美一区二区另类 | 99爱在线 | 欧美片网站免费 | 在线亚洲欧美 | 国产日韩欧美另类 | 日韩精品成人 | 久久日韩粉嫩一区二区三区 | 欧美色欧美亚洲另类七区 | 青青久草 | 欧美成人精品一区二区三区 | 午夜视频在线免费观看 | 国产一区二区黑人欧美xxxx | 成年网站在线观看 | 99福利视频 | 中文字幕视频在线 | 国产久| 美女久久久久久久久 | 在线午夜 | 福利视频网站 | 羞羞视频在线网站观看 | 欧美日韩高清在线一区 | 精品网 |