中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python運行出現異常如何處理

發布時間:2020-08-24 15:53:29 來源:億速云 閱讀:209 作者:Leah 欄目:編程語言

這篇文章運用簡單易懂的例子給大家介紹 Python運行出現異常如何處理,代碼非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

首先,程序在運行的過程中,產生了異常,這時,我們可能會有兩種想法,第一種是針對這個異常做某些特殊的處理來進行程序的降級處理;第二種是希望程序忽略這個異常繼續執行下去,這個異常可能并不干擾主邏輯的執行。

那這個時候我們怎么辦呢?

有編程經驗的同學馬上就想到了,那我們去 try 它啊,在 Python 中,我們同樣可以去 try 它,從字面意思上理解就已經非常清晰明確了,以下的內容是要嘗試執行的。

語法:

try:
    ...(可能產生異常的代碼)
except:
    ...(產生異常后的處理代碼)

但是,還會有一種情況,不管上面的代碼有沒有出錯,有一部分代碼我們總希望它能執行,這時,我們可以添加另一個關鍵字 finally 。

從字面意思可以就可以看出來,這個是最后要執行的意思。

語法:

try:
    ...(可能產生異常的代碼)
except:
    ...(產生異常后的處理代碼)
finally:
    ...(一定要執行的代碼)

下面開始我們今天的代碼演示。

我們先擬定一個場景,我們定義一個除法函數,如果除數不為 0 ,是可以正常返回值的,如果除數為 0 ,那么整個程序肯定會直接異常報錯。

def division(x, y):
    try:
        return x / y
    except:
        print('程序報錯啦!!!')
        return None

print(division(15, 5))

輸出結果如下:

3.0

這時程序是可以正常輸出的,這時我們修改一下調用的參數,改為 division(15, 0) ,看下輸出結果:

程序報錯啦!!!
None

可以看到,這里打印了我在程序中設置的 None ,并沒有之前的紅色的異常信息拋出。這里的 except 會捕捉我們所有的異常信息,但是,異常信息也是有很多分類的,比如我們之前遇到過的訪問字典中不存在的 key 的異常 KeyError ,比如我們剛才捕捉到的 ZeroDivisionError 異常,還有也是我們之前遇到過的數組下標越界的異常 IndexError  。

比如這里的代碼我可以捕捉更加詳細的異常信息 ZeroDivisionError 。

def division1(x, y):
    try:
        return x / y
    except ZeroDivisionError:
        print('程序報錯啦!!!')
        return None

print(division1(15, 0))

輸出結果如下:

程序報錯啦!!!
None

那么,看到這里,你可能會有一個疑問,我們為什么要對異常分類,直接抓取所有異常不是更方便么?

當然,對于邏輯比較簡單的程序,直接捕捉所有異常是更方便的,但是在某些特定的業務場景下,一段程序可能會拋出多種異常,我們希望根據異常種類的不同,定制不同的解決方案,至少我們知道當前的程序是拋出了什么異常,這時,程序異常分類就顯得尤為重要。

我們這里演示一下,如果我們輸出的值不是數字,是字符串的話。。。。

def division2(x, y):
    try:
        return x / y
    except ZeroDivisionError:
        print('您輸出的除數為 0 !!!')
        return None
    except TypeError:
        print('您輸出的參數類型非法!!!')
        return None

print(division2('python', 0))

輸出結果如下:

您輸出的參數類型非法!!!
None

對的,你沒有看錯,異常信息是能捕捉多個的,是可以并排寫的。至于先拋出那個,就要看那個異常先發生了。

因為示例代碼的邏輯過于簡單,異常拋出順序無法演示,請各位同學見諒(li zhi qi zhuang)。

上面我們還提到了 finally ,我們接著來演示 finally 這個關鍵字的使用。

def division3(x, y):
    try:
        return x / y
    except ZeroDivisionError:
        print('您輸出的除數為 0 !!!')
        return None
    except TypeError:
        print('您輸出的參數類型非法!!!')
        return None
    finally:
        print('你一定能看到我!!!')

print(division3(15, 3))
print(division3('python', 0))

可以看到,這里我使用有異常和正常無任何問題的數據進行測試,結果如下:

你一定能看到我!!!
5.0
您輸出的參數類型非法!!!
你一定能看到我!!!
None

確實, finally 中的內容是能正常打印的,這里多提一句,這里經常的使用方式是來關閉一些 I/O 讀寫操作或者一些外部連接,如數據庫、緩存服務等。

關于 Python運行出現異常如何處理就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

梅河口市| 凯里市| 察隅县| 永吉县| 河东区| 兴文县| 长治县| 射阳县| 吴江市| 广元市| 安宁市| 徐水县| 伊吾县| 长阳| 禄丰县| 乐昌市| 社旗县| 肥东县| 巴林右旗| 台中县| 全州县| 浑源县| 岳池县| 南开区| 华坪县| 海城市| 咸宁市| 蒲城县| 石林| 肥东县| 三门峡市| 绥德县| 棋牌| 凉城县| 桦南县| 芦溪县| 南宫市| 芦山县| 义马市| 达州市| 乐陵市|