python自定义异常处理_Python 自定义异常
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 自定义异常相关推荐
- python自定义随机数_python:numpy.random模块生成随机数
简介 所谓生成随机数,即按照某种概率分布,从给定的区间内随机选取一个数.常用的分布有:均匀分布(uniform distribution),正态分布(normal distribution),泊松分布 ...
- python 自定义模块_Python 自定义模块路径
问题: 假设我们自己写了一个名为 log_config.py 的日志记录程序模块.此模块会被其他程序所引用,如下例子. import log_config logger = log_config.lo ...
- python编写异常处理_Python 简明教程 --- 23,Python 异常处理
要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语法错误和一些其它的运行时错误等. 逻辑错误: 这种错误不会导致程序崩溃,它不容易被发现,只有在执行结 ...
- python之异常处理_Python之异常处理
异常对象 请大家运行如下代码 a = 100/0 print(a) 就会发现解释器显示如下的错误提示 Traceback (most recent call last): File "xxx ...
- python自定义类型转换_Python JSONDecoder自定义null类型的转换
更新12/30/2014 实现这一目标的最简单方法是使用JSONDecoder的object_hook回调,如下面的旧答案中所述.但是,由于这需要对数据中的每个键值对进行额外的函数调用,这可能会对性能 ...
- python程序异常处理_python中程序的异常处理
什么叫异常? 导致程序异常退出叫做异常 try...except...else 如果要抓取某种特定异常可以用except ERROR as e else:如果程序正常执行那么会执行else里面的代码 ...
- python自定义复数_python里的复数complex
复数是一个数学概念,包含了实部和虚部.在python设计语言中,可以直接定义以j为单位,也可以使用complex函数创建复数,这个函数可以传实部和虚部,也可以只传实部. 我们把形如z=a+bj(a,b ...
- Springboot2 自定义异常处理
开发过程中由于出现异常时想要返返回指定类型的json串,springboot自带的异常处理无法满足需求,自己封装异常处理类进行指定的异常处理. import java.util.HashMap; im ...
- 谷粒学院-统一异常处理(全局异常处理、特定异常处理、自定义异常处理)
什么是统一异常处理 我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异 常处理 (一)全局异常处理 在service-base中创建exceptionhandler ...
最新文章
- 认识OSSIM中的UUID
- iToken----开发前准备
- MySQL从5.5升级到5.6,TIMESTAMP的变化
- 【译】用SQL统一所有:一种有效的、语法惯用的流和表管理方法
- 5g通用模组是什么_中国联通发布《5G通用模组白皮书V2.0》
- list复制到另一个list_一文总结saltstack的十一个常用模块,附实例讲解
- opencv-api threshold
- 程序员利用恶意软件攻击数万台 Mac、PC,窃取用户隐私长达 13 年
- Office 2013和Office 365应用程序对电脑和移动操作系统支持情况分析
- doip 源码_DoIP—协议框架
- 从零开始的RVOS: Referring Video Object Segmentation
- backdrop-filter高斯模糊
- word插入Java代码
- linux上redis升级(将 Redis 3.0.7 升级到 5.0.0版本)
- 万维网,互联网,因特网之间的区别
- 从Excel到Smartbi,国内头部企业的报表是这样进阶的!
- 【PostMan使用】PostMan的简单使用教程
- 基于Redis的频次控制能力实现
- 推荐几个Github中国区排名前100的公众号
- Emgu CV4图像处理之环境搭建1(C#)