一日一技:不使用 try...except 掩蓋一些已知異常

一日一技:不使用 try...except 掩蓋一些已知異常

一日一技:不使用 try...except 掩蓋一些已知異常

攝影:產品經理
下廚:kingname
產品經理的母上送的大閘蟹
在咱們寫代碼的過程當中,可能會遇到不少不少的異常,其中有一些異常,咱們知道它可有可無,能夠忽略,那麼咱們的代碼可能會這樣寫:ide

nums = [1, 2, 3, '4', 5, 6]
for num in nums:
    try:
        print(num + 1)
    except TypeError:
        pass

在這段代碼中,須要讓列表nums中的每個元素加1並打印結果。但其中有一個元素是字符串,字符串與數字相加會拋出TypeError。若是咱們想直接忽略它,那麼就能夠像上面這樣寫代碼。3d

可是,可能會有人以爲用了try...except之後代碼不整齊,不美觀。code

爲了讓代碼美觀起來,咱們可使用contextlib模塊中的suppress。blog

它的使用很是簡單:字符串

from contextlib import suppress

nums = [1, 2, 3, '4', 5, 6]
for num in nums:
    with suppress(TypeError):
        print(num + 1)

只要在 suppress上下文的縮進中發生的TypeError,都會被自動忽略。產品

運行效果以下圖所示:it

一日一技:不使用 try...except 掩蓋一些已知異常
須要注意的是,你不能把 for 循環放在supress的縮進裏面,不然會致使報錯位置以後的循環沒法被執行,以下圖所示:
一日一技:不使用 try...except 掩蓋一些已知異常class

一日一技:不使用 try...except 掩蓋一些已知異常

相關文章
相關標籤/搜索