自定義異常類型

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