1. 程式人生 > >丟擲自定義的異常,異常處理中丟擲異常

丟擲自定義的異常,異常處理中丟擲異常

你可以用raise語句來引發一個異常。異常/錯誤物件必須有一個名字,且它們應是Error或Exception類的子類

下面是一個引發異常的例子:

class ShortInputException(Exception):
‘’‘自定義的異常類’’’
def init(self, length, atleast):
#super().init()
self.length = length
self.atleast = atleast

def main():
try:
s = input('請輸入 --> ')
if len(s) < 3:
# raise引發一個你定義的異常
raise ShortInputException(len(s), 3)
except ShortInputException as result:#x這個變數被繫結到了錯誤的例項
print(‘ShortInputException: 輸入的長度是 %d,長度至少應是 %d’% (result.length, result.atleast))
else:
print(‘沒有異常發生.’)

main()
執行結果如下:
在這裡插入圖片描述

注意
以上程式中,關於程式碼#super().init()的說明
這一行程式碼,可以呼叫也可以不呼叫,建議呼叫,因為__init__方法往往是用來對建立完的物件進行初始化工作,如果在子類中重寫了父類的__init__方法,即意味著父類中的很多初始化工作沒有做,這樣就不保證程式的穩定了,所以在以後的開發中,如果重寫了父類的__init__方法,最好是先呼叫父類的這個方法,然後再新增自己的功能

異常處理中丟擲異常
class Test(object):
def init(self, switch):
self.switch = switch #開關
def calc(self, a, b):
try:
return a/b
except Exception as result:
if self.switch:
print(“捕獲開啟,已經捕獲到了異常,資訊如下:”)
print(result)
else:
#重新丟擲這個異常,此時就不會被這個異常處理給捕獲到,從而觸發預設的異常處理
raise

a = Test(True)
a.calc(11,0)

print("----------------------華麗的分割線----------------")

a.switch = False
a.calc(11,0)
執行結果:
在這裡插入圖片描述