python筆記--錯誤和異常處理
阿新 • • 發佈:2021-02-17
技術標籤:python學習筆記
錯誤和異常處理
優雅地處理Python的錯誤和異常是構建健壯程式的重要部分。在資料分析中,許多函式函式只⽤於部分輸⼊。例如,Python的float函式可以將字串轉換成浮點數,但輸⼊有誤時,有 ValueError 錯誤:
In [197]: float('1.2345')
Out[197]: 1.2345
In [198]: float('something')
---------------------------------------------------------------------------
ValueError Traceback ( most recent call last)
<ipython-input-198-439904410854> in <module>()
----> 1 float('something')
ValueError: could not convert string to float: 'something'
假如想優雅地處理float的錯誤,讓它返回輸⼊值。我們可以寫⼀個函式,在try/except中調⽤float:
def attempt_float(x):
try:
return float(x)
except:
return x
當float(x)丟擲異常時,才會執⾏except的部分:
In [200]: attempt_float('1.2345')
Out[200]: 1.2345
In [201]: attempt_float('something')
Out[201]: 'something'
你可能只想處理ValueError,TypeError錯誤(輸⼊不是字串或數值)可能是合理的bug。可以寫⼀個異常型別:
def attempt_float(x):
try:
return float(x)
except ValueError:
return x
可以⽤元組包含多個異常:
def attempt_float(x):
try:
return float (x)
except (TypeError, ValueError):
return x
某些情況下,你可能不想抑制異常,你想⽆論try部分的程式碼是否成功,都執⾏⼀段程式碼。可以使⽤finally:
f = open(path, 'w')
try:
write_to_file(f)
finally:
f.close()