python之异常处理模块
一 . python 内置的异常类
在程序运行过程中,如果出现错误,python解释器会创建一个异常对象,并抛出给系统运行时。即程序终止正常执行流程,转而执行异常处理流程。
在某种特殊条件下,代码中也可以创建一个异常对象,并通过raise语句,抛出给系统运行时。
异常对象是异常类的对象实例。python异常类均派生于BaseException,python内置的异常类的层次结构如下:
BaseException
+-- SystemExit
+-- KeyboardInterrupt
+-- GeneratorExit
+-- 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
+-- FutureWarning
+-- ImportWarning
+-- UnicodeWarning
+-- BytesWarning
1.1python标准异常详解
|
异常名称 |
描述 |
|
BaseException |
所有异常的基类 |
|
SystemExit |
解释器请求退出 |
|
KeyboardInterrupt |
用户中断执行(通常是输入^C) |
|
Exception |
常规错误的基类 |
|
StopIteration |
迭代器没有更多的值 |
|
GeneratorExit |
生成器(generator)发生异常来通知退出 |
|
SystemExit |
Python 解释器请求退出 |
|
StandardError |
所有的内建标准异常的基类 |
|
ArithmeticError |
所有数值计算错误的基类 |
|
FloatingPointError |
浮点计算错误 |
|
OverflowError |
数值运算超出最大限制 |
|
ZeroDivisionError |
除(或取模)零 (所有数据类型) |
|
AssertionError |
断言语句失败 |
|
AttributeError |
对象没有这个属性 |
|
EOFError |
没有内建输入,到达EOF 标记 |
|
EnvironmentError |
操作系统错误的基类 |
|
IOError |
输入/输出操作失败 |
|
OSError |
操作系统错误 |
|
WindowsError |
系统调用失败 |
|
ImportError |
导入模块/对象失败 |
|
KeyboardInterrupt |
用户中断执行(通常是输入^C) |
|
LookupError |
无效数据查询的基类 |
|
IndexError |
序列中没有没有此索引(index) |
|
KeyError |
映射中没有这个键 |
|
MemoryError |
内存溢出错误(对于Python 解释器不是致命的) |
|
NameError |
未声明/初始化对象 (没有属性) |
|
UnboundLocalError |
访问未初始化的本地变量 |
|
ReferenceError |
弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
|
RuntimeError |
一般的运行时错误 |
|
NotImplementedError |
尚未实现的方法 |
|
SyntaxError |
Python 语法错误 |
|
IndentationError |
缩进错误 |
|
TabError |
Tab 和空格混用 |
|
SystemError |
一般的解释器系统错误 |
|
TypeError |
对类型无效的操作 |
|
ValueError |
传入无效的参数 |
|
UnicodeError |
Unicode 相关的错误 |
|
UnicodeDecodeError |
Unicode 解码时的错误 |
|
UnicodeEncodeError |
Unicode 编码时错误 |
|
UnicodeTranslateError |
Unicode 转换时错误 |
|
Warning |
警告的基类 |
|
DeprecationWarning |
关于被弃用的特征的警告 |
|
FutureWarning |
关于构造将来语义会有改变的警告 |
|
OverflowWarning |
旧的关于自动提升为长整型(long)的警告 |
|
PendingDeprecationWarning |
关于特性将会被废弃的警告 |
|
RuntimeWarning |
可疑的运行时行为(runtime behavior)的警告 |
|
SyntaxWarning |
可疑的语法的警告 |
|
UserWarning |
用户代码生成的警告 |
|
NameError |
尝试访问一个没有申明的变量 |
| ZeroDivisionError | 除数为0 |
| SyntaxError | 语法错误 |
| IndexError | 索引超出序列范围 |
| KeyError | 请求一个不存在的字典关键字 |
| IOError | 输入输出错误(比如你要读的文件不存在) |
| AttributeError | 尝试访问未知的对象属性 |
| ValueError | 传给函数的参数类型不正确,比如给int()函数传入字符串形 |
1.2 自定义异常
自定义异常:继承exception
自定义异常必须使用raise抛出,而且只能通过手工方式触发
class DivisionException(Exception):
def __init__(self,x,y):
Exception.__init__(self)
self.x = x
self.y = y
try:
x=5
y=2
if x/y > 0:
print(x/y)
raise DivisionException(x,y)
except DivisionException as div:
print('DivisionException x/y = %.2f'%(div.x/div.y))
>>>>>待续
python之异常处理模块的更多相关文章
- Python中optionParser模块的使用方法[转]
本文以实例形式较为详尽的讲述了Python中optionParser模块的使用方法,对于深入学习Python有很好的借鉴价值.分享给大家供大家参考之用.具体分析如下: 一般来说,Python中有两个内 ...
- Python第八天 模块 包 全局变量和内置变量__name__ Python path
Python第八天 模块 包 全局变量和内置变量__name__ Python path 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Pyt ...
- 正则表达式与Python中re模块的使用
正则表达式与Python中re模块的使用 最近做了点爬虫,正则表达式使用的非常多,用Python做的话会用到re模块. 本文总结一下正则表达式与re模块的基础与使用. 另外,给大家介绍一个在线测试正则 ...
- Python 常用系统模块整理
Python中的常用的系统模块中部分函数等的整理 random: 随机数 sys: 系统相关 os: 系统相关的 subprocess: 执行新的进程 multiprocessing: 进程相关 th ...
- Python中logging模块的基本用法
在 PyCon 2018 上,Mario Corchero 介绍了在开发过程中如何更方便轻松地记录日志的流程. 整个演讲的内容包括: 为什么日志记录非常重要 日志记录的流程是怎样的 怎样来进行日志记录 ...
- Python进阶----异常处理
Python进阶----异常处理 一丶错误和异常 错误: 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 ...
- Python 多进程异常处理
前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较‘重’的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较‘重’ ...
- django-rest-framework-源码解析002-序列化/请求模块/响应模块/异常处理模块/渲染模块/十大接口
简介 当我们使用django-rest-framework框架时, 项目必定是前后端分离的, 那么前后端进行数据交互时, 常见的数据类型就是xml和json(现在主流的是json), 这里就需要我们d ...
- Python队列queue模块
Python中queue模块常用来处理队列相关问题 队列常用于生产者消费者模型,主要功能为提高效率和程序解耦 1. queue模块的基本使用和相关说明 # -*- coding:utf-8 -*- # ...
随机推荐
- 用户命令行方式连MYSQL数据库
现在是手工入门,就不太依赖IDE,使用MYSQL的JDBC的JAR包连数据库的方式如下: 演示文件内容: package cc.openhome; import java.sql.*; public ...
- POJ 1966
求的是无向图的点连通度.开始便想到网络流,既然选的是点,当然就要拆点加边了.但无论如何也不敢往枚举源汇点的方向想,因为网络流复习度很高.看看网上大牛的,都是枚举,再看数据,原来N才50个点,枚举无压力 ...
- C#之打印乘法表
设计说明 由图可知: 1.我们需要打印出九行: 2.每行中最大列数等于行数: 代码实现 public void Display1() { Console.WriteLine("乘法表:&qu ...
- Mac上搭建android环境:Android Studio+GreenVPN
1.下载Android Studio,https://developer.android.com/sdk/index.html 2.使用GreenVPN,感觉还能够.18/月.http://www.g ...
- CSU 1506 Problem D: Double Shortest Paths(最小费用最大流)
题意:2个人从1走到n,假设一条路第一次走则是价值di,假设第二次还走这条路则须要价值di+ai,要你输出2个人到达终点的最小价值! 太水了!一条边建2次就OK了.第一次价值为di,第二次为ai+di ...
- discuz “欣” “衡” 用户不能注册 bug修改
discuz “欣” “衡” 用户不能注册 原因是 discuz 有这样一段代码 function check_username($username) { $guestexp = '\xA1\xA1| ...
- js slider
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or ...
- POJ3087 Shuffle'm Up
题目: 现有字符串s1.s2.s12,其中s1.s2的长度为len,s12的长度为2*len. 是否可以通过一些操作使s1和s2转换合并成s12? 变换的操作规则如下: 假设s1=11111,s2=0 ...
- c语言open()介绍
2013-09-0914:40:13 1. 头文件: #include <sys/types.h> #include <sys/stat.h> #include <fcn ...
- vue项目中阻止浏览器返回上一页
vue项目中在某个页面阻止浏览器返回上一页,适用移动端.PC端. 使用场景例如: 首页 与 A页面 来回跳转,那样点击浏览器返回时也会来回跳转,本想当页面在首页的时候就不再返回了,所以这个时候 ...