Python 基礎教程

Python 流程控制

Python 函數(shù)

Python 數(shù)據(jù)類型

Python 文件操作

Python 對象和類

Python 日期和時間

Python 高級知識

Python 參考手冊

Python 自定義異常

Python有許多內置的異常,當其中的某些錯誤出現(xiàn)時,它們會強制您的程序輸出錯誤。

但是,有時您可能需要創(chuàng)建符合您目的的自定義異常處理。

在Python中,用戶可以通過創(chuàng)建新類來定義此類異常。該異常類必須直接或間接地從Exception該類派生。大多數(shù)內置異常也是從此類派生的。

>>> class CustomError(Exception):
...     pass
...

>>> raise CustomError
Traceback (most recent call last):
...
__main__.CustomError

>>> raise CustomError("An error occurred")
Traceback (most recent call last):
...
__main__.CustomError: An error occurred

在這里,我們創(chuàng)建了一個名為CustomError的用戶定義異常,該異常是從Exception類派生的。 與其他異常一樣,可以使用帶有可選錯誤消息的raise語句來引發(fā)此新異常。

當我們開發(fā)大型Python程序時,最好將程序引發(fā)的所有用戶定義的異常放在單獨的文件中。許多標準模塊可以做到這一點。他們分別將例外定義為exceptions.py或errors.py。

用戶定義的異常類可以實現(xiàn)普通類可以執(zhí)行的所有操作,但是我們通常使它們簡單明了。大多數(shù)實現(xiàn)都聲明一個自定義基類,并從該基類派生其他異常類。在下面的示例中,將使該概念更清晰。

示例:Python中的用戶定義異常

在此示例中,我們將說明如何在程序中使用用戶定義的異常來引發(fā)和捕獲錯誤。

該程序將要求用戶輸入一個數(shù)字,直到他們正確猜出所存儲的數(shù)字為止。為了幫助他們弄清楚,將提示他們的猜測是大于還是小于存儲的數(shù)字。

# 定義Python用戶定義的異常
class Error(Exception):
   """其他異常的基類"""
   pass

class ValueTooSmallError(Error):
   """當輸入值太小時引發(fā)"""
   pass

class ValueTooLargeError(Error):
   """當輸入值過大時引發(fā)"""
   pass

# 我們的主程序
# 用戶猜出一個數(shù)字,直到他/她猜對為止

# 你需要猜這個數(shù)字
number = 10

while True:
   try:
       i_num = int(input("輸入數(shù)字: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("這個值太小,請再試一次!")
       print()
   except ValueTooLargeError:
       print("這個值太大,請再試一次!")
       print()

print("恭喜你! 你猜對了.")

這是該程序的示例運行。

輸入數(shù)字: 12
這個值太大,請再試一次!

輸入數(shù)字: 0
這個值太小,請再試一次!

輸入數(shù)字: 9
這個值太小,請再試一次!

輸入數(shù)字: 10
恭喜你! 你猜對了.

在這里,我們定義了一個名為Error的基類。

我們的程序實際引發(fā)的另外兩個異常(ValueTooSmallError和ValueTooLargeError)是從這個類派生出來的。這是在Python編程中定義用戶定義異常的標準方法,但您并不僅限于此方法。

訪問此頁面以詳細了解如何處理Python中的異常。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清