Python自定义异常类及用法
2023-06-13 09:12:01 时间
前面的例子里充斥了很多 Python 内置的异常类型,读者也许会问,我可以创建自己的异常类型吗?
![Python异常类继承图](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f6405d6b225.gif)
图 1 Python 异常类继承图
答案是肯定的,Python 允许用户自定义异常类型。实际开发中,有时候系统提供的异常类型不能满足开发的需求。这时就可以创建一个新的异常类来拥有自己的异常。
其实,在前面章节中,已经涉及到了异常类的创建,例如:
class SelfExceptionError(Exception): pass raise SelfExceptionError() except SelfExceptionError as err: print( 捕捉到自定义异常 )
运行结果为:
捕捉到自定义异常
可以看到,此程序中就自定义了一个名为 SelfExceptionError 的异常类,只不过该类是一个空类。
由于大多数 Python 内置异常的名字都以 Error 结尾,所以实际命名时尽量跟标准的异常命名一样。
需要注意的是,自定义一个异常类,通常应继承自 Exception 类(直接继承),当然也可以继承自那些本身就是从 Exception 继承而来的类(间接继承 Exception)。
![Python异常类继承图](http://ytso-blog-oss-img.oss-cn-beijing.aliyuncs.com/wp-content/uploads/2021/07/20/20210720_60f6405d6b225.gif)
图 1 Python 异常类继承图
注意,虽然所有类同时继承自 BaseException,但它是为系统退出异常而保留的,假如直接继承 BaseException,可能会导致自定义异常不会被捕获,而是直接发送信号退出程序运行,脱离了我们自定义异常类的初衷。
另外,系统自带的异常只要触发会自动抛出(比如 NameError、ValueError 等),但用户自定义的异常需要用户自己决定什么时候抛出。也就是说,自定义的异常需要使用 raise 手动抛出。
下面也是自定义的异常类,和上面的异常类相比,其内部实现了 __init__() 方法和 __str__() 方法:
class InputError(Exception): 当输出有误时,抛出此异常 #自定义异常类型的初始化 def __init__(self, value): self.value = value # 返回异常类对象的说明信息 def __str__(self): return ( {} is invalid input .format(repr(self.value))) raise InputError(1) # 抛出 MyInputError 这个异常 except InputError as err: print( error: {} .format(err))
运行结果为:
error: 1 is invalid input
注意,只要自定义的类继承自 Exception,则该类就是一个异常类,至于此类中包含的内容,并没有做任何规定。
23200.html
python相关文章
- 在pycharm中如何新建Python文件?_github下载的python源码项目怎么用
- pycharm导入库变灰色_import python
- python进制转换函数-Python中进制转换函数的使用
- python中sqrt函数用法_Python : sqrt() 函数
- 简述python变量的命名规则_Python 变量命名规则
- python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器
- Python操作Excel文件(1)
- python setattr函数_Python内置函数(53)——setattr
- python蜘蛛XXwenku
- 关于python函数,你该了解这些
- python 流程、循环、异常、函数的高级用法(3.0)
- Python udp编程_python socket udp
- python抛出异常和捕获异常_Python异常
- python处理异常的关键字_如果抛出异常应用哪些关键字
- python mkv转mp4,如何将mkv格式转换成mp4视频呢
- python抛出异常写法_零基础学 Python(32):如何抛出和捕获异常?「建议收藏」
- 【Python】这25个Pandas高频实用技巧,不得不服!
- python制作自动交易程序_Python如何实现自动化交易
- Python绘制旭日图_python绘制散点图
- Python制作《精灵进化》
- python自动化之BeautifulReport显示异常的解决方案
- python怎么自定义异常
- 汉诺塔Python实现详解编程语言
- python多线程多队列(BeautifulSoup网络爬虫)详解编程语言
- Linux下如何快速卸载Python环境(linux如何卸载python)
- Python dict字典keys()、values()和items()方法
- Python异常处理try except else finally
- Linux查看Python安装路径的方法(linux查看python安装路径)
- Connecting to MSSQL with Python: A Comprehensive Guide for Beginners(python连接mssql)
- python从MSSQL到Python:一段跨语言的旅程(mssql除以)
- Python重新引入被覆盖的自带function
- Python的高级Git库Gittle