Python基础之异常定义
技术背景
在各类python的项目中,总会涉及到项目自身相关的一些约束条件。这些约束条件体现在,当用户输入的参数或者文件不符合项目要求时,就拒绝这个参数的输入并且播报出来,提醒用户自行修改,而这一过程就是python的异常定义与捕获所提供的功能。python的异常捕获与定义,是一个比较基础的话题,在其他的编程语言中也会有涉及到类似的操作。
异常定义实例
这里我们直接给出一个定义异常的实例:
# exception.py
class 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.py
class 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', 'r', 'o', 'r')
当然,这里我们需要再次提醒的是,虽然看起来异常信息播报与程序出现异常一致,但是由于这里先用try的方法进行了捕获和抑制,因此程序后面的部分还是会继续执行的。
总结概要
本文中介绍了常规python中的异常的定义方法,可以在自己的python项目中定制化的实现一些异常类。在定制化的类中我们可以给打印信息加上一些醒目的颜色,用于提醒用户以促进问题的修改。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/exception.html
作者ID:DechinPhy
更多原著文章请参考:https://www.cnblogs.com/dechinphy/
参考链接
- https://blog.csdn.net/wls666/article/details/100867234
- https://www.runoob.com/python/python-exceptions.html
Python基础之异常定义的更多相关文章
- 十九. Python基础(19)--异常
十九. Python基础(19)--异常 1 ● 捕获异常 if VS异常处理: if是预防异常出现, 异常处理是处理异常出现 异常处理一般格式: try: <............. ...
- Python基础学习----异常
''' 异常: 程序在运行的时候,Python的解释器遇到一个错误会停止运行. 并且会提供错误的信息,这就是异常 抛出异常: 程序停止执行并且提示错误信息这个动作就是抛出异常(raise Except ...
- Python基础(10) - 异常
Python 异常:程序出现了错误而在正常控制流以外采取的行为 Python中常见的异常: 1. NameError:尝试访问一个未声明的变量 >>> something Trace ...
- [Python基础]008.异常
异常 异常处理 捕获异常 抛出异常 自定义异常 一些常见的异常 异常处理 捕获异常 try/except 与C,java等语言用try/catch来捕获异常相似,Python使用try/except ...
- Python基础之告警定义与告警抑制
技术背景 在前面一篇博客中我们介绍了在python中自定义异常以及异常的捕获.这里我们要介绍另外一种形式的用户提醒:告警.我们这里就不给出一些过于官方或者技术的定义了,在实际项目中的使用场景主要有这么 ...
- python基础----函数的定义和调用、return语句、变量作用域、传参、函数嵌套、函数对象、闭包、递归函数
1.函数的定义: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...
- python基础知识08-类定义、属性、初始化和析构
1.类的定义 class 类 是独立存放变量(属性/方法)的一个空间. 每个实例都是一个独立的变量空间.不同实例之间的空间互相不可见. 一个实例的特征,就是属性. 定义在类中的私有属性也可以被子类继承 ...
- Python基础之异常
一.摘要 Python使用被称为异常 的特殊对象来管理程序执行期间发生的错误.每当发生让Python不知所措的错误时,它都会创建一个异常对象.如果你编写了处理该异常的代码,程序将继续运行:如果你未对异 ...
- python基础:异常捕捉
一.异常 python在程序运行过程中,可能会出现一些错误和异常,导致程序停止运行.我们可以通过捕捉异常,并对异常进行处理,使得程序可以正常运行 异常有很多类型,可以根据类型挨个捕捉.也可统一捕获: ...
随机推荐
- full page screen capture in js
full page screen capture in js html2canvas https://html2canvas.hertzen.com/ https://github.com/nikla ...
- NGK.IO新一代高倍币BGV即将登陆交易所
据悉NGK.IO新一代高倍币BGV已与全球前十大交易所进行深度恰谈,预计在不久的将来会完成上线计划.此次BGV的上线战略布局,将进一步扩大BGV生态,赋予BGV更多的便利性和发展空间.除此之外,NGK ...
- sklearn中的pipeline实际应用
前面提到,应用sklearn中的pipeline机制的高效性:本文重点讨论pipeline与网格搜索在机器学习实践中的结合运用: 结合管道和网格搜索以调整预处理步骤以及模型参数 一般地,sklearn ...
- Flutter 中不得不会的 mixin
mixin 是 Dart 中非常重要的概念,对于未接触过此概念的Coder来说尤其重要,最近看源码的时候,由于对 mixin 不熟悉导致理解出现偏差,走了很多弯路,所以这篇文章介绍一下 mixin 概 ...
- C#关于panle重叠
当多个panle重叠不显示不出来的时候 选择视图---------------其它窗口----------------文档大纲 然后拖动进行调整
- Kubernetes和docker----1.开始使用k8s和docker
开始使用Kubernetes和docker docker命令 运行一个容器 docker run busybox echo "Hello world" 构建容器镜像 docker ...
- springCloud中的服务调用feign
springCloud中的服务调用(要在调用端写) 前提进行了服务注册 流程: 1.在服务模块中添加依赖 <!--服务调用--> <dependency> <groupI ...
- oracle中关键字的执行顺序
执行顺序: from where group by having select order by ******当having/select 中出现组函数,那么其他没有被组函数修饰的列就必须出现下gro ...
- oracle can't kill session
oracle 在杀会话时,会出现杀不掉的情况. 原因是在回滚大事物 解决方法: alter system disconnect session 'sid, serial#' immediate; ...
- 第50天学习打卡(JavaScript)
前端三要素 HTML(结构):超文本标记语言(Hyper Text Markup Language),决定网页的结构和内容. CSS(表现):层叠样式表(Cascading Style Sheets) ...