解析python使用者自定義異常例項

大雄45發表於2021-10-17
導讀 在本篇文章裡小編給大家整理的是一篇關於python使用者自定義異常的例項講解,以後需要的朋友們可以跟著學習參考下。
說明

1、程式可以透過建立一個新的異常類來命名它們自己的異常。異常應該是典型的繼承自Exception類,直接或間接的方式。

2、異常python有一個大基類,繼承了Exception。因此,我們的定製類也必須繼承Exception。

例項
class ShortInputException(Exception):
    def __init__(self, length, atleast):
        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()
知識點擴充套件:
自定義異常型別
#1.使用者自定義異常型別,只要該類繼承了Exception類即可,至於類的主題內容使用者自定義,可參考官方異常類
class TooLongExceptin(Exception):
  "this is user's Exception for check the length of name "
  def __init__(self,leng):
    self.leng = leng
  def __str__(self):
    print("姓名長度是"+str(self.leng)+",超過長度了")
捕捉使用者手動丟擲的異常
#1.捕捉使用者手動丟擲的異常,跟捕捉系統異常方式一樣
def name_Test():
  try:
    name = input("enter your naem:")
    if len(name)>4:
      raise TooLongExceptin(len(name))
    else :
      print(name)
  
  except TooLongExceptin,e_result: #這裡異常型別是使用者自定義的
    print("捕捉到異常了")
    print("列印異常資訊:",e_result)
  
#呼叫函式,執行
name_Test()
==========執行結果如下:==================================================
enter your naem:aaafsdf
捕捉到異常了
Traceback (most recent call last):
列印異常資訊: 姓名長度是7,超過長度了
姓名長度是7,超過長度了
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 16, in name_Test
  raise TooLongExceptin(len(name))
__main__.TooLongExceptin:During handling of the above exception, another exception occurred:
  
Traceback (most recent call last):
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 26, inname_Test()
 File "D:/pythoyworkspace/file_demo/Class_Demo/extion_demo.py", line 22, in name_Test
  print("列印異常資訊:",e_result)
TypeError: __str__ returned non-string (type NoneType)

以上就是python使用者自定義異常的例項講解的詳細內容。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2786917/,如需轉載,請註明出處,否則將追究法律責任。

相關文章