欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python的中異常處理機制

 更新時間:2018年08月30日 09:18:28   作者:章魚喵_  
這篇文章主要介紹了python的中異常處理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

什么是異常處理

定義:異常處理就是我們在寫Python時,經(jīng)??吹降膱箦e信息,例如;NameError TypeError ValueError等,這些都是異常。

異常是一個事件,改事件會在程序執(zhí)行過程中發(fā)生,影響程序的正常執(zhí)行,一般情況下,在python中無法處理程序時就會發(fā)生異常,異常時Python的一個對象,表示一個錯誤,當Python腳本發(fā)生異常時,我們需要捕獲并處理異常,否則程序就會終止執(zhí)行。

Python 使用被稱為 異常 的特殊對象來管理程序執(zhí)行期間發(fā)生的錯誤。每當發(fā)生讓 Python 不知所措的錯誤時,它都會創(chuàng)建一個異常對象。如果你編寫了處理該異常的代碼,程序?qū)⒗^續(xù)運行;如果你未對異常進行處理,程序?qū)⑼V?,并顯示一個 traceback ,其中包含有關異常的報告。異常是使用 try-except 代碼塊處理的。 try-except 代碼塊讓 Python 執(zhí)行指定的操作,同時告訴 Python 發(fā)生異常時怎么辦。使用了 try-except 代碼塊時,即便出現(xiàn)異常,程序也將繼續(xù)運行:顯示你編寫的友好的錯誤消息,而不是令用戶迷惑的 traceback 。

處理ZeroDivisionError異常

下面來看一種導致 Python 引發(fā)異常的簡單錯誤。你可能知道不能將一個數(shù)字除以 0 ,但我們還是讓 Python 這樣做吧:

print(5/0)

報錯:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    print(5/0)
ZeroDivisionError: integer division or modulo by zero

使用 try-except 代碼塊

當你認為可能發(fā)生了錯誤時,可編寫一個 try-except 代碼塊來處理可能引發(fā)的異常。你讓 Python 嘗試運行一些代碼,并告訴它如果這些代碼引發(fā)了指定的異常,該怎么辦。

處理 ZeroDivisionError 異常的 try-except 代碼塊類似于下面這樣:

try:
  print(5/0)
except ZeroDivisionError:
  print("You can't divide by zero!")

# You can't divide by zero!

如果 try-except 代碼塊后面還有其他代碼,程序?qū)⒔又\行,因為已經(jīng)告訴了 Python 如何處理這種錯誤。

使用異常避免崩潰

發(fā)生錯誤時,如果程序還有工作沒有完成,妥善地處理錯誤就尤其重要。這種情況經(jīng)常會出現(xiàn)在要求用戶提供輸入的程序中;如果程序能夠妥善地處理無效輸入,就能再提示用戶提供有效輸入,而不至于崩潰。

創(chuàng)建一個只執(zhí)行除法運算的簡單計算器:

print("Give me two numbers, and I'll divide them.")
print("Enter 'q' to quit.")
while True:
  first_number = input("\nFirst number: ")
  if first_number == 'q':
    break
  second_number = input("Second number: ")
  try:
    answer = int(first_number) / int(second_number)
  except ZeroDivisionError:
    print("You can't divide by 0!")
  else:
    print(answer)

try-except-else 代碼塊的工作原理大致如下:

Python 嘗試執(zhí)行 try 代碼塊中的代碼;只有可能引發(fā)異常的代碼才需要放在 try 語句中。有時候,有一些僅在 try 代碼塊成功執(zhí)行時才需要運行的代碼;這些代碼應放在 else 代碼塊中。 except 代碼塊告訴 Python ,如果它嘗試運行 try 代碼塊中的代碼時引發(fā)了指定的異常,該怎么辦。

通過預測可能發(fā)生錯誤的代碼,可編寫健壯的程序,它們即便面臨無效數(shù)據(jù)或缺少資源,也能繼續(xù)運行,從而能夠抵御無意的用戶錯誤和惡意的攻擊。

處理 FileNotFoundError 異常

FileNotFoundError 錯誤是函數(shù) open() 導致的,因此要處理這個錯誤,必須將 try 語句放在包含 open() 的代碼行之前:

filename = 'alice.txt'
try:
  with open(filename) as f_obj:
    contents = f_obj.read()
except FileNotFoundError:
  msg = "Sorry, the file " + filename + " does not exist."
  print(msg)

處理多個文件

def count_words(filename):
  """ 計算一個文件大致包含多少個單詞 """
  try:
    with open(filename) as f_obj:
      contents = f_obj.read()
  except FileNotFoundError:
    msg = "Sorry, the file " + filename + " does not exist."
    print(msg)
  else:
    # 計算文件大致包含多少個單詞
    words = contents.split()
    num_words = len(words)
    print("The file " + filename + " has about " + str(num_words) + " words.")

filenames = ['a.txt', 'b.txt', 'c.txt', 'd.txt']
for filename in filenames:
  count_words(filename)

異常時保持靜默

要讓程序在失敗時一聲不吭,可像通常那樣編寫 try 代碼塊,但在 except 代碼塊中明確地告訴 Python 什么都不要做。 Python 有一個 pass 語句,可在代碼塊中使用它來讓 Python 什么都不要做:

def count_words(filename):
  """ 計算一個文件大致包含多少個單詞 """
  try:
    with open(filename) as f_obj:
      contents = f_obj.read()
  except FileNotFoundError:
    pass

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 詳解Python如何實現(xiàn)惰性導入-lazy import

    詳解Python如何實現(xiàn)惰性導入-lazy import

    如果你的 Python 程序程序有大量的 import,而且啟動非常慢,那么你應該嘗試懶導入,本文分享一種實現(xiàn)惰性導入的一種方法,需要的可以參考一下
    2022-10-10
  • python heic后綴圖片文件轉(zhuǎn)換成jpg格式的操作

    python heic后綴圖片文件轉(zhuǎn)換成jpg格式的操作

    這篇文章主要介紹了python heic后綴圖片文件轉(zhuǎn)換成jpg格式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python讀取URL生成PDF的方法步驟

    Python讀取URL生成PDF的方法步驟

    URL(Uniform Resource Locator)是用于標識和定位網(wǎng)絡上資源的字符串,本文將給大家介紹Python讀取URL生成PDF的方法步驟,文中有相關的代碼示例和圖文講解供大家參考,需要的朋友可以參考下
    2024-07-07
  • Python實現(xiàn)KPM算法詳解

    Python實現(xiàn)KPM算法詳解

    大家好,本篇文章主要講的是Python實現(xiàn)KPM算法詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Python使用FFMPEG壓縮視頻的方法

    Python使用FFMPEG壓縮視頻的方法

    FFMPEG是一個完整的,跨平臺的解決方案,記錄,轉(zhuǎn)換和流音頻和視頻,,這篇文章主要介紹了FFMPEG視頻壓縮與Python使用方法,需要的朋友可以參考下
    2023-09-09
  • 使用Python3實現(xiàn)判斷函數(shù)的圈復雜度

    使用Python3實現(xiàn)判斷函數(shù)的圈復雜度

    編寫函數(shù)最重要的原則就是:別寫太復雜的函數(shù),那什么樣的函數(shù)才能算是過于復雜?一般會通過兩個標準來判斷,長度和圈復雜度,下面我們就來看看如何使用Python判斷函數(shù)的圈復雜度吧
    2024-04-04
  • 基于Python編寫簡單實用的日志裝飾器

    基于Python編寫簡單實用的日志裝飾器

    在寫代碼的時候,往往會漏掉日志這個關鍵因素,導致功能在使用的時候出錯卻無法溯源。這個時候只要利用日志裝飾器就能解決,本文將用Python自制一個簡單實用的日志裝飾器,需要的可以參考一下
    2022-05-05
  • 用Python繪制一個仿黑洞圖像

    用Python繪制一個仿黑洞圖像

    黑洞圖像大家都知道,畢竟前幾年剛發(fā)布的時候曾火遍全網(wǎng),甚至都做成表情包了。本文就來用Python繪制一個仿黑洞圖像,希望大家能夠喜歡
    2023-02-02
  • Python函數(shù)之iterrows(),iteritems(),itertuples()的區(qū)別說明

    Python函數(shù)之iterrows(),iteritems(),itertuples()的區(qū)別說明

    這篇文章主要介紹了Python函數(shù)之iterrows(),iteritems(),itertuples()的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python裝飾器基礎概念與用法詳解

    Python裝飾器基礎概念與用法詳解

    這篇文章主要介紹了Python裝飾器基礎概念與用法,結合實例形式詳細分析了Python裝飾器的概念、功能、用法及相關操作注意事項,需要的朋友可以參考下
    2018-12-12

最新評論