1. 程式人生 > 其它 >python筆記--錯誤和異常處理

python筆記--錯誤和異常處理

技術標籤: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()