个性化阅读
专注于IT技术分析

python3自定义异常 – Python3教程

上一章Python教程请查看:python3异常处理:try,except和finally

在本文中,你将学习如何根据你的需求自定义异常。

Python有许多内置的异常,这些异常会在程序出错时强制程序输出错误。

然而,有时你可能需要创建服务于你的目的的自定义异常。

在Python中,用户可以通过创建一个新类来定义此类异常,这个异常类必须直接或间接地从异常类派生,大多数内置异常也是从这个类派生出来的。

>>> 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

在这里,我们创建了一个名为CustomError的用户定义异常,它派生自exception类。与其他异常一样,可以使用带有可选错误消息的raise语句来引发此新异常。

在开发大型Python程序时,最好将程序引发的所有用户定义的异常放在单独的文件中。许多标准模块都这样做,它们分别将异常定义为exception.py或error.py(通常但不总是)。

用户定义的异常类可以实现普通类所能实现的所有功能,但是我们通常使它们简单明了。大多数实现声明自定义基类,并从这个基类派生其他异常类,在下面的例子中,这个概念更加清晰。

示例:Python中的用户定义异常

在本例中,我们将演示如何在程序中使用用户定义的异常来引发和捕获错误。

该程序将要求用户输入一个数字,直到他们猜出一个正确存储的数字,为了帮助他们找出答案,提示他们猜测的数字是大于还是小于存储的数字。

# 定义Python用户定义的异常
class Error(Exception):
   """其他异常的基类"""
   pass
class ValueTooSmallError(Error):
   """当输入值太小时引发"""
   pass
class ValueTooLargeError(Error):
   """当输入值过大时引发"""
   pass
# 主程序
# 用户猜测一个数字,直到他/她猜对为止
# 你需要猜这个数字
number = 10
while True:
   try:
       i_num = int(input("输入一个数字: "))
       if i_num < number:
           raise ValueTooSmallError
       elif i_num > number:
           raise ValueTooLargeError
       break
   except ValueTooSmallError:
       print("此值太小,请重试!")
       print()
   except ValueTooLargeError:
       print("此值太大,请重试!")
       print()
print("恭喜你!你猜对了。")

在这里,我们定义了一个名为Error的基类。

程序实际引发的另外两个异常(ValueTooSmallError和ValueTooLargeError)是从这个类派生出来的,这是在Python编程中定义用户定义异常的标准方法,但你并不仅限于此。

赞(0)
未经允许不得转载:srcmini » python3自定义异常 – Python3教程

评论 抢沙发

评论前必须登录!