首頁 > 后端開發 > Python教程 > 正文

python處理異常有哪些方式

原創 2019-06-17 09:38:05 0 1001
第七期線上培訓班
異常處理的用法:為了保證程序的健壯性與容錯性,即在遇到錯誤時候程序不會崩潰,我們需要對異常進行處理,

1,如果錯誤發生的條件是可預知的,我們需要用if進行處理,在錯誤發生之前進行預防

AGE=10
while True:
    age=input('>>: ').strip()
    if age.isdigit(): #只有在age為字符串形式的整數時,下列代碼才不會出錯,該條件是可預知的
        age=int(age)
        if age == AGE:
            print('you got it')
            break

2,如果錯誤發生的條件是不可預知的,則需要用到try..except:在錯誤發生之后進行處理

#基本語法為

try:

被檢測的代碼塊

except 異常類型:

try中一旦檢測到異常,就執行這個位置的邏輯

#舉例
try:
    f=open('a.txt')
    g=(line.strip() for line in f)
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
    print(next(g))
except StopIteration:
    f.close()

五,try...except...的詳細用法

  我們把可能發生錯誤的語句放在try模塊里,用except來處理異常。except可以處理一個專門的異常,也可以處理一組圓括號中的異常,如果except后沒有指定異常,則默認處理所有的異常。每一個try,都必須至少有一個except

1,異常類只能來處理指定的異常情況,如果非指定異常則無法處理

s1 = 'hello'
try:
    int(s1)
except IndexError as e: # 未捕獲到異常,程序直接報錯
    print e

2,多分支

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)

3,萬能異常Exception

s1 = 'hello'
try:
    int(s1)
except Exception as e:
    print(e)

4,多分支+Exception

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
except Exception as e:
    print(e)

5,異常的其他機構(try...finally語法)

  try...finally語句無論是否發生異常都將會執行最后的代碼。語法如下:

try:
<語句>
finally:
<語句>    #退出try時總會執行
raise

 示例:

s1 = 'hello'
try:
    int(s1)
except IndexError as e:
    print(e)
except KeyError as e:
    print(e)
except ValueError as e:
    print(e)
#except Exception as e:
#    print(e)
else:
    print('try內代碼塊沒有異常則執行我')
finally:
    print('無論異常與否,都會執行該模塊,通常是進行清理工作')

6,主動觸發異常(raise語句)

  我們可以使用raise語句自己觸發異常,raise語法格式如下:

raise [Exception [, args [, traceback]]]

  語句中Exception是異常的類型(例如,NameError)參數是一個異常參數值。該參數是可選的,如果不提供,異常的參數是"None"。

最后一個參數是可選的(在實踐中很少使用),如果存在,是跟蹤異常對象。

示例:

一個異常可以是一個字符串,類或對象。 Python的內核提供的異常,大多數都是實例化的類,這是一個類的實例的參數。

定義一個異常非常簡單,如下所示:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 觸發異常后,后面的代碼就不會再執行
try:
    raise TypeError('類型錯誤')
except Exception as e:
    print(e)

7,自定義異常

  通過創建一個新的異常類,程序可以命名它們自己的異常。異常應該是典型的繼承自Exception類,通過直接或間接的方式。

  以下為與BaseException相關的實例,實例中創建了一個類,基類為BaseException,用于在異常觸發時輸出更多的信息。

  在try語句塊中,用戶自定義的異常后執行except塊語句,變量 e 是用于創建Networkerror類的實例。

class Networkerror(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg
 
try:
    raise Networkerror('類型錯誤')
except Networkerror as e:
    print(e)

8,斷言:assert條件

assert 1 == 1 
assert 1 == 2

9,總結try...except

1,把錯誤處理和真正的工作分開來

2,代碼更易組織,更清晰,復雜的工作任務更容易實現

3,毫無疑問,更安全了,不至于由于一些小的疏忽而使程序意外崩潰了

以上就是python處理異常有哪些方式的詳細內容,更多請關注php中文網其它相關文章!

php中文網最新課程二維碼
  • 相關標簽:Python
  • 本文原創發布php中文網 ,轉載請注明出處,感謝您的尊重!
  • 相關文章


  • pycharm自帶python嗎
  • python字典增加刪除鍵值的方法
  • Python中記錄循環次數的方法
  • 哪些網站全用python
  • python處理異常有哪些方式
  • 網友評論

    文明上網理性發言,請遵守 新聞評論服務協議

    我要評論
    獨孤九賤(5)_ThinkPHP5視頻教程

    獨孤九賤(5)_ThinkPHP5視頻教程

    ThinkPHP是國內最流行的中文PHP開發框架,也是您Web項目的最佳選擇。《php.cn獨孤九賤(5)-ThinkPHP5視頻教程》課程以ThinkPHP5最新版本為例,從最基本的框架常識開始,將...

    獨孤九賤(4)_PHP視頻教程

    獨孤九賤(4)_PHP視頻教程

    江湖傳言:PHP是世界上最好的編程語言。真的是這樣嗎?這個梗究竟是從哪來的?學會本課程,你就會明白了。 PHP中文網出品的PHP入門系統教學視頻,完全從初學者的角度出發,絕不玩虛的,一切以實用、有用...

    獨孤九賤(1)_HTML5視頻教程

    獨孤九賤(1)_HTML5視頻教程

    《php.cn原創html5視頻教程》課程特色:php中文網原創幽默段子系列課程,以惡搞,段子為主題風格的php視頻教程!輕松的教學風格,簡短的教學模式,讓同學們在不知不覺中,學會了HTML知識。 ...

    ThinkPHP5實戰之[教學管理系統]

    ThinkPHP5實戰之[教學管理系統]

    本套教程,以一個真實的學校教學管理系統為案例,手把手教會您如何在一張白紙上,從零開始,一步一步的用ThinkPHP5框架快速開發出一個商業項目。

    PHP入門視頻教程之一周學會PHP

    PHP入門視頻教程之一周學會PHP

    所有計算機語言的學習都要從基礎開始,《PHP入門視頻教程之一周學會PHP》不僅是PHP的基礎部分更主要的是PHP語言的核心技術,是學習PHP必須掌握的內容,任何PHP項目的實現都離不開這部分的內容,通...

    作者信息

    anonymity

    認證0級講師

    最近文章
    python如何判斷字符串類型 987
    python如何定義整數 680
    python中jam如何使用 909

    相關視頻教程

  • Python實戰爬蟲視頻教程 Python實戰爬蟲視頻教程
  • Python教程之Tkinter視頻教程 Python教程之Tkinter視頻教程
  • Python進階視頻教程 Python進階視頻教程
  • python編程入門系列圖文教程 python編程入門系列圖文教程
  • 相關視頻章節

    第七期線上培訓班 足彩吧合买平台