Python 自定义异常

Python有许多内置的异常,当其中的某些错误出现时,它们会强制您的程序输出错误。

但是,有时您可能需要创建符合您目的的自定义异常处理。

在Python中,用户可以通过创建新类来定义此类异常。该异常类必须直接或间接地从Exception该类派生。大多数内置异常也是从此类派生的。>>> 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程序时,最好将程序引发的所有用户定义的异常放在单独的文件中。许多标准模块可以做到这一点。他们分别将例外定义为exceptions.py或errors.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

raise ValueTooSmallError

elif i_num > number:

raise ValueTooLargeError

break

except ValueTooSmallError:

print("这个值太小,请再试一次!")

print()

except ValueTooLargeError:

print("这个值太大,请再试一次!")

print()

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

这是该程序的示例运行。输入数字: 12

这个值太大,请再试一次!

输入数字: 0

这个值太小,请再试一次!

输入数字: 9

这个值太小,请再试一次!

输入数字: 10

恭喜你! 你猜对了.

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

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

python自定义异常处理_Python 自定义异常相关推荐

  1. python自定义随机数_python:numpy.random模块生成随机数

    简介 所谓生成随机数,即按照某种概率分布,从给定的区间内随机选取一个数.常用的分布有:均匀分布(uniform distribution),正态分布(normal distribution),泊松分布 ...

  2. python 自定义模块_Python 自定义模块路径

    问题: 假设我们自己写了一个名为 log_config.py 的日志记录程序模块.此模块会被其他程序所引用,如下例子. import log_config logger = log_config.lo ...

  3. python编写异常处理_Python 简明教程 --- 23,Python 异常处理

    要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语法错误和一些其它的运行时错误等. 逻辑错误: 这种错误不会导致程序崩溃,它不容易被发现,只有在执行结 ...

  4. python之异常处理_Python之异常处理

    异常对象 请大家运行如下代码 a = 100/0 print(a) 就会发现解释器显示如下的错误提示 Traceback (most recent call last): File "xxx ...

  5. python自定义类型转换_Python JSONDecoder自定义null类型的转换

    更新12/30/2014 实现这一目标的最简单方法是使用JSONDecoder的object_hook回调,如下面的旧答案中所述.但是,由于这需要对数据中的每个键值对进行额外的函数调用,这可能会对性能 ...

  6. python程序异常处理_python中程序的异常处理

    什么叫异常? 导致程序异常退出叫做异常 try...except...else 如果要抓取某种特定异常可以用except ERROR as e else:如果程序正常执行那么会执行else里面的代码 ...

  7. python自定义复数_python里的复数complex

    复数是一个数学概念,包含了实部和虚部.在python设计语言中,可以直接定义以j为单位,也可以使用complex函数创建复数,这个函数可以传实部和虚部,也可以只传实部. 我们把形如z=a+bj(a,b ...

  8. Springboot2 自定义异常处理

    开发过程中由于出现异常时想要返返回指定类型的json串,springboot自带的异常处理无法满足需求,自己封装异常处理类进行指定的异常处理. import java.util.HashMap; im ...

  9. 谷粒学院-统一异常处理(全局异常处理、特定异常处理、自定义异常处理)

    什么是统一异常处理 我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异 常处理 (一)全局异常处理 在service-base中创建exceptionhandler ...

最新文章

  1. 认识OSSIM中的UUID
  2. iToken----开发前准备
  3. MySQL从5.5升级到5.6,TIMESTAMP的变化
  4. 【译】用SQL统一所有:一种有效的、语法惯用的流和表管理方法
  5. 5g通用模组是什么_中国联通发布《5G通用模组白皮书V2.0》
  6. list复制到另一个list_一文总结saltstack的十一个常用模块,附实例讲解
  7. opencv-api threshold
  8. 程序员利用恶意软件攻击数万台 Mac、PC,窃取用户隐私长达 13 年
  9. Office 2013和Office 365应用程序对电脑和移动操作系统支持情况分析
  10. doip 源码_DoIP—协议框架
  11. 从零开始的RVOS: Referring Video Object Segmentation
  12. backdrop-filter高斯模糊
  13. word插入Java代码
  14. linux上redis升级(将 Redis 3.0.7 升级到 5.0.0版本)
  15. 万维网,互联网,因特网之间的区别
  16. 从Excel到Smartbi,国内头部企业的报表是这样进阶的!
  17. 【PostMan使用】PostMan的简单使用教程
  18. 基于Redis的频次控制能力实现
  19. 推荐几个Github中国区排名前100的公众号
  20. Emgu CV4图像处理之环境搭建1(C#)

热门文章

  1. 想精通SQL Server, T-SQL的全历史你听过吗?
  2. 快手查权重+抖音查权重+QQ查估值三合一软件工具【查询脚本+详细教程】
  3. 关于微信小程序的40029error(大无语事件)
  4. Unity3D-将美术提供的图片当做字体使用(普通图片自动生成Custom font)
  5. 8086微机实验代码示例解释
  6. 有序集合对象 ZSet 的底层原理
  7. Visual Studio Code 创建vue项目
  8. vim实现多行复制粘贴undo/redo等操作
  9. nginx日志切割-按天
  10. Redis缓存面试题