自定義異常類型

  1. 透過創建一個異常類別,用戶可自行定義異常。異常應該是典型的繼承自 Exception 的類別,以下語法 SomeCustomException 為自定義的異常名稱,Exception 可以指定使用python 內建的任何「標準異常」。
    class SomeCustomException(Exception):
        pass
    
  2. 範例:自定義一個 NotPositiveError 異常類別,繼承標準異常 UserWaring。當判斷數字小於等於 0 時,觸發此自定義異常。
    pyuser@deyu:~/zzz$ vi try7.py 
    pyuser@deyu:~/zzz$ cat try7.py 
    #!/usr/bin/python
    
    class NotPositiveError(UserWarning):
        pass
    
    string = input("輸入一個正整數: ")
    try:
        number = int(string)
        if number <= 0:
            raise NotPositiveError
    except ValueError:
        print("這不是一個數字")
    except NotPositiveError:
        print("這不是一個大於 0 的整數")
    
  3. 執行結果:輸入正整數 23,沒有觸發異常;輸入 0 ,觸發 NotPositiveError 異常;輸入 abc 觸發 ValueError 異常。
    pyuser@deyu:~/zzz$ ./try7.py 
    輸入一個正整數: 23
    pyuser@deyu:~/zzz$ ./try7.py 
    輸入一個正整數: 0
    這不是一個大於 0 的整數
    pyuser@deyu:~/zzz$ ./try7.py 
    輸入一個正整數: abc
    這不是一個數字