異常對象 | Python從入門到精通:高階篇之四十二
抛出異常
可以使用 raise 語句來抛出異常,raise語句後需要跟一個異常類 或 異常的執行個體。
def add(a,b):
r = a + b
return r
print(add(123,456))
執行結果:

我們現在不希望a和b有負數,如果a和b中有負數,就向調用處抛出異常。
def add(a,b):
if a < 0 or b < 0:
raise Exception
r = a + b
return r
print(add(-123,456))
此時發現抛出的異常并沒有具體的異常資訊,是因為現在是一個類,如果想輸出異常資訊需要建立執行個體。
raise Exception('兩個參數中不能有負數!')
raise用于向外部抛出異常,後邊可以跟一個異常類,或異常類的執行個體。
一般而言,我們并不想程式中出現異常,那為什麼還要将異常抛出呢?
抛出異常的目的,告訴調用者這裡調用時出現問題,希望可以處理一下。
例如:我們針對上述代碼,隻是希望是兩個正數相加,如果負數出現了,此時函數内部是決定不了該如何處理的,是以應該告知調用者,由調用者決定。
此時除了異常外,還有另外一種方法:
def add(a,b):
if a < 0 or b < 0:
return None
r = a + b
return r
# print(add(123,456))
print(add(-123,456))
是以也可以通過if else來代替異常的處理。
但是如果項目中的問題比較大,異常必須處理的情況下使用if else 去作為異常處理,傳回的結果如果沒有處理,程式繼續執行問題可能會更加嚴重,但是抛出異常則會更靈活,強制去處理異常,保證程式的正常執行。
自定義異常類
我們也可以自定義異常類,隻需要建立一個類繼承Exception即可。
class MyError(Exception):
pass
def add(a,b):
if a < 0 or b < 0:
raise MyError('自定義的異常')
r = a + b
return r
print(add(-123,456))
配套視訊課程,點選這裡檢視
擷取更多資源請訂閱
Python學習站