Python异常继承关系和自定义异常实现代码实例


Posted in Python onFebruary 20, 2020

这篇文章主要介绍了Python异常继承关系和自定义异常实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

主要介绍 python 中异常的继承关系,及如何自定义异常

1. 异常的继承关系

BaseException # 所有异常的基类
 +-- SystemExit # 解释器请求退出
 +-- KeyboardInterrupt  用户中断执行(通常是输入^C)
 +-- GeneratorExit # 生成器(generator)发生异常来通知退出
 +-- Exception # 常规异常的基类
  +-- StopIteration # 迭代器没有更多的值
  +-- StandardError # 标准错误
  | +-- BufferError
  | +-- ArithmeticError
  | | +-- FloatingPointError
  | | +-- OverflowError
  | | +-- ZeroDivisionError
  | +-- AssertionError
  | +-- AttributeError
  | +-- EnvironmentError
  | | +-- IOError
  | | +-- OSError
  | |   +-- WindowsError (Windows)
  | |   +-- VMSError (VMS)
  | +-- EOFError
  | +-- ImportError
  | +-- LookupError
  | | +-- IndexError
  | | +-- KeyError
  | +-- MemoryError
  | +-- NameError
  | | +-- UnboundLocalError
  | +-- ReferenceError
  | +-- RuntimeError
  | | +-- NotImplementedError
  | +-- SyntaxError
  | | +-- IndentationError
  | |   +-- TabError
  | +-- SystemError
  | +-- TypeError
  | +-- ValueError
  |   +-- UnicodeError
  |    +-- UnicodeDecodeError
  |    +-- UnicodeEncodeError
  |    +-- UnicodeTranslateError
  +-- Warning
   +-- DeprecationWarning
   +-- PendingDeprecationWarning
   +-- RuntimeWarning
   +-- SyntaxWarning
   +-- UserWarning
   +-- FutureWarnin
   +-- ImportWarnin
   +-- UnicodeWarnin
   +-- BytesWarning

2. 自定义异常

#自定义异常 需要继承Exception
class MyException(Exception):

 def __init__(self, *args):
  self.args = args

if __name__ == '__main__':
 try:
  raise MyException("自定义异常")
 except MyException as e:
  print e

3. 异常捕获

# 示例
str1 = 'abc'
try:
 int(str1)
except IndexError as e:
 print e
except KeyError as e:
 print e
except ValueError as e:
 print e
else:
 print 'try内正常处理'
finally:
 print '无论异常与否,都会执行我'

4. 主动触发异常

# raise xxx
def test_zero(num):
 try:
  if num == 0:
   raise ValueError('参数错误')
  return num
 except Exception as e:
  print e

test_zero(0)

5. 采用traceback模块查看异常

异常发生时,Python 能“记住”引发的异常以及程序的当前状态。

Python 维护着traceback(跟踪)对象,其中含有异常发生时与函数调用堆栈有关的信息。

异常可能在一系列嵌套较深的函数调用中引发。

程序调用每个函数时,Python 会在“函数调用堆栈”的起始处插入函数名。一旦异常被引发,Python 会搜索一个相应的异常处理程序。如果当前函数中没有异常处理程序,当前函数会终止执行,Python 会搜索当前函数的调用函数,并以此类推,直到发现匹配的异常处理程序,或者Python 抵达主程序为止。这一查找合适的异常处理程序的过程称为“堆栈辗转开解”(StackUnwinding)。

解释器一方面维护着与放置堆栈中的函数有关的信息,另一方面也维护着与已从堆栈中“辗转开解”的函数有关的信息。

#示例
def div(num1, num2):
 try:
  result = num1/num2
  return result
 except Exception as e:
  traceback.print_exc()

print div(1, 0)
#执行结果
Traceback (most recent call last):
None
 File "F:/Technology-20161005/python/python_project/demo/exceptiondemo/exceptiondemo.py", line 17, in div
 result = num1/num2
ZeroDivisionError: integer division or modulo by zero
# 可以将异常信息写到文件中
traceback.print_exc(file=open('1.txt','w+'))

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
详解flask表单提交的两种方式
Jul 21 Python
pyqt5的QWebEngineView 使用模板的方法
Aug 18 Python
彻彻底底地理解Python中的编码问题
Oct 15 Python
python 格式化输出百分号的方法
Jan 20 Python
python+mysql实现学生信息查询系统
Feb 21 Python
python用match()函数爬数据方法详解
Jul 23 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
对django layer弹窗组件的使用详解
Aug 31 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
Python安装与卸载流程详细步骤(图解)
Feb 20 #Python
PyCharm 专业版安装图文教程
Feb 20 #Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
Feb 20 #Python
Python 实现黑客帝国中的字符雨的示例代码
Feb 20 #Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
Feb 20 #Python
Python OpenCV读取显示视频的方法示例
Feb 20 #Python
基于spring boot 日志(logback)报错的解决方式
Feb 20 #Python
You might like
php实现图片上传、剪切功能
2016/05/07 PHP
php 常用的系统函数
2017/02/07 PHP
MAC下通过改apache配置文件切换php多版本的方法
2017/04/26 PHP
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
2007/04/27 Javascript
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
jquery实现一个简单好用的弹出框
2014/09/26 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
js实现鼠标划过给div加透明度的方法
2015/05/25 Javascript
js和jquery实现监听键盘事件示例代码
2020/06/24 Javascript
JS正则表达式验证密码格式的集中情况总结
2017/02/23 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
import与export在node.js中的使用详解
2017/09/28 Javascript
JavaScript模块模式实例详解
2017/10/25 Javascript
详解性能更优越的小程序图片懒加载方式
2018/07/18 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python实现获取nginx服务器ip及流量统计信息功能示例
2018/05/18 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
浅谈python图片处理Image和skimage的区别
2019/08/04 Python
Pytorch之contiguous的用法
2019/12/31 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
python 画条形图(柱状图)实例
2020/04/24 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
匡威德国官网:Converse德国
2019/01/26 全球购物
环境建设实施方案
2014/03/14 职场文书
实习协议书范本
2014/09/25 职场文书
争先创优个人总结
2015/03/04 职场文书
应聘教师自荐信
2015/03/26 职场文书
小时代观后感
2015/06/10 职场文书
nginx 配置缓存
2022/05/11 Servers