阅读 105

Python基础之异常定义

Python基础之异常定义

编程之家收集整理的这篇文章主要介绍了Python基础之异常定义,编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。


搜索热词

技术背景

在各类python的项目中,总会涉及到项目自身相关的一些约束条件。这些约束条件体现在,当用户输入的参数或者文件不符合项目要求时,就拒绝这个参数的输入并且播报出来,提醒用户自行修改,而这一过程就是python的异常定义与捕获所提供的功能。python的异常捕获与定义,是一个比较基础的话题,在其他的编程语言中也会有涉及到类似的操作。

异常定义实例

这里我们直接给出一个定义异常的实例:

# exception.pyclass NewError(BaseException):    def __init__(self,args):        self.args = list(args)        print ('\033[1;31m NewError Raised: \033[0m')if __name__ == '__main__':    try:        raise NewError("Test Error")    except NewError as e:        print (e.args)

在这个实例中,我们定义了一个新的异常NewError,这个类继承自BaseException,是所有异常的基类。关于更多的异常类,可以参考本文的参考链接2,其中有比较详细的介绍。回到上面的这个案例,我们定义了一个有入参的异常类,也就是说可以跟用户的输入参数进行关联,以提醒是哪一个用户输入的参数导致了这个异常的出现。在这个异常中我们可以打印一些基础信息,这里我们简单的用NewError Raised来描述,同时我们给这个print输出加上了红色,大致效果如下:



这里的31就是定义的红色的意思,关于其他颜色的定义可以参考如下的表格(表格来源于参考链接1):


打印完整异常信息

上述的实例中由于捕获了异常信息,其实同时也对这个异常进行了抑制,如果不进行抑制就会弹出Traceback之类的信息并且中断程序的运行。这里我们参考博客中所演示的一个方案,采用traceback类来播报异常信息,但不终止程序的运行。针对上述代码修改后如下所示:

# exception.pyclass NewError(BaseException):    def __init__(self,args):        self.args = list(args)if __name__ == '__main__':    try:        raise NewError("Test Error")    except NewError as e:        import traceback        traceback.print_exc()

在修改的实例中我们去掉了异常类内部的打印以及原来在except下的打印,采用traceback来包含所有的异常信息,输出如下:

[dechin-20n2s01200 exception]# python3 exception.py Traceback (most recent call last):  File "exception.py",line 9,in <module>    raise NewError("Test Error")NewError: ('T','e','s','t',' ','E','r','o','r')

当然,这里我们需要再次提醒的是,虽然看起来异常信息播报与程序出现异常一致,但是由于这里先用try的方法进行了捕获和抑制,因此程序后面的部分还是会继续执行的。

总结概要

本文中介绍了常规python中的异常的定义方法,可以在自己的python项目中定制化的实现一些异常类。在定制化的类中我们可以给打印信息加上一些醒目的颜色,用于提醒用户以促进问题的修改。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/exception.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/

参考链接

  1. https://blog.csdn.net/wls666/article/details/100867234

  2. https://www.runoob.com/python/python-exceptions.html

总结

以上是编程之家为你收集整理的Python基础之异常定义全部内容,希望文章能够帮你解决Python基础之异常定义所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。


文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐