day14-python异常处理
1. 异常
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时就会发生一个异常。异常是Python对象,表示一个错误。当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。最常用异常的形式
异常的常用形式
我们平时工作中最长用到的异常处理的形式:
try:
正常的操作
......................
except:
发生异常,执行这块代码
......................
else:
如果没有异常执行这块代码
finally:
不管如何,最后一定要执行的代码
举个例子:
try:
a = 10
b = 0
a/b
except Exception as e:
print 'aaaaaaa', e
# raise e
else:
print('ok')
finally:
print('finally')
结果:
aaaaaaa integer division or modulo by zero
finally
解释:10/0捕获到这个异常,直接打印aaaaaaa和异常信息,最后打印finally。
当我们把10/0改成10/2的时候
try:
a =10
b = 2
10/2
except Exception as e:
print 'aaaaaaa', e
# raise e
else:
print('ok')
finally:
print('finally')
结果:
ok
finally
解释:
没有捕获到异常,直接走else,最后还是需要走finally,不管有没有捕获异常finally是最后都需要执行的。
Excepthion异常类
Excepthion是所有的异常基础类(),对于python的标准异常,我们列出如下,以做参考:
|
异常名称 |
描述 |
|
BaseException |
所有异常的基类 |
|
SystemExit |
解释器请求退出 |
|
KeyboardInterrupt |
用户中断执行(通常是输入^C) |
|
Exception |
常规错误的基类 |
|
StopIteration |
迭代器没有更多的值 |
|
GeneratorExit |
生成器(generator)发生异常来通知退出 |
|
StandardError |
所有的内建标准异常的基类 |
|
ArithmeticError |
所有数值计算错误的基类 |
|
FloatingPointError |
浮点计算错误 |
|
OverflowError |
数值运算超出最大限制 |
|
ZeroDivisionError |
除(或取模)零 (所有数据类型) |
|
AssertionError |
断言语句失败 |
|
AttributeError |
对象没有这个属性 |
|
EOFError |
没有内建输入,到达EOF 标记 |
|
EnvironmentError |
操作系统错误的基类 |
|
IOError |
输入/输出操作失败 |
|
OSError |
操作系统错误 |
|
WindowsError |
系统调用失败 |
|
ImportError |
导入模块/对象失败 |
|
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 |
用户代码生成的警告 |
raise关键字
raise用来触发异常,
语法如下:
raise [Exception [, args [, traceback]]]
语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
try:
a = 10
b = 0
a/b except Exception as e: print 'aaaaaaa', e raise e else: print('ok') finally: print('finally') print('hello world') 结果: aaaaaaa integer division or modulo by zero Traceback (most recent call last): finally File "E:/test/test.py", line 11, in <module> raise e ZeroDivisionError: integer division or modulo by zero 解释: raise关键字就是捕获到异常,并抛出。程序运行终止。但是finally还是会执行的。所以最后的hello world没有打印出来。
day14-python异常处理的更多相关文章
- python异常处理(基础)
之前在学习python的时候有整理过python异常处理的文章,不够简单也不够完整,所以决定再整理一篇,算做补充. http://www.cnblogs.com/fnng/archive/2013/0 ...
- Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏
一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...
- Python 异常处理--raise函数用法
raise语句手工引发一个异常: "raise" [expression ["," expression ["," expression]] ...
- [Python学习笔记][第八章Python异常处理结构与程序调试]
1/30 第八章Python异常处理结构与程序调试 异常处理 try-except结构 try: try块 except Exception: except块 try-except-else结构 tr ...
- python异常处理try,except,else,finally,raise
先看下else的使用: try: ... exception: ... else: ... 只有在try中没有发生任何异常,所有代码完全成功的情况下才会转入else 再看下finally: final ...
- Python 异常处理
Python 异常处理 python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.你可以使用该功能来调试python程序. 异常处理: 本站Python教程会具体介绍. 断言 ...
- python异常处理的哲学
所谓异常指的是程序的执行出现了非预期行为,就好比现实中的做一件事过程中总会出现一些意外的事.异常的处理是跨越编程语言的,和具体的编程细节相比,程序执行异常的处理更像是哲学.限于认知能力和经验所限,不可 ...
- Python异常处理总结
一.何谓异常处理 在我们调试程序时,经常不可避免地出现意料之外的情况,导致程序不得不停止运行,然后提示大堆提示信息,大多是这种情况都是由异常引起的.异常的出现一方面是因为写代码时粗心导致的语法错误,这 ...
- python异常处理与断言以及日志模块
python异常处理与断言 目录: 1.异常处理 2.断言(assert) 3.日志模块(logging) 4.修改之前的车票信息查询,把日志模块.异常处理加进去 1.异常处理 代码如下: 语法: t ...
- python 异常处理函数--raise
Python 异常处理--raise函数用法 在Python中,要想引发异常,最简单的形式就是输入关键字raise,后跟要引发的异常的名称.异常名称标识出具体的类: Python异常处理是那些类的对象 ...
随机推荐
- 学习笔记2—MATLAB的copyfile技巧
clearclc %一.新建文件夹,%二.将原始路径下的数据剪切到新建文件夹中 path = ('E:\DFC_DMN_ASD_DATA_res\Cluster_hcc\4,6,8\Cluster_6 ...
- AD10中创建材料清单(BOM表)
材料清单可以用来作为元件的采购清单,同时也可以用于查看PCB中的元件封装信息是否正确. 操作: Reports----->Bill of Materials
- MyBatis-session-SqlSession
The SqlSession instance is the most powerful in MyBatis. It is where you'll find all of the methods ...
- 20165327《Java程序设计》实验一 Java开发环境的熟悉 实验报告
20165327<Java程序设计>实验二 <Java面向对象程序设计>实验报告 实验二 <Java面向对象程序设计> 一.实验报告封面 课程:Java程序设计 班 ...
- 基于AngularJS的Onsen UI --Onsen UI学习笔记
AngularJS与Onsen UI的结合,Onsen UI应用程序实际上是一个AngularJS 1应用程序. <!doctype html><html lang="en ...
- 20171113xlVba指定文件夹多簿多表分表合并150
'2017年11月13日 'Next_Seven '功能:文件夹对话框指定文件夹下,合并(复制粘贴)每个Excel文件内的指定子表内容, '在名为"设置"的工作表A列 输入汇总子表 ...
- 02linux 基本命令
系统环境变量的设置 以nginx为例: 方式一: ~/.bash_profile 这是个人的 /etc/profile 为系统的环境变量 vim /etc/profile.d/nginx.sh #在 ...
- windows系统文件和linux系统文件
windows系统文件和linux系统文件 1.单用户操作系统和多用户操作系统 单用户操作系统:指一台计算机在同一时间 只能由一个用户 使用,一个用户独自享用系统的全部硬件和软件资源 Windows ...
- 384. Shuffle an Array(java,数组全排列,然后随机取)
题目: Shuffle a set of numbers without duplicates. 分析: 对一组不包含重复元素的数组进行随机重排,reset方法返回最原始的数组,shuffle方法随机 ...
- python FileNotFoundError: [WinError 2] 系统找不到指定的文件。
D:\Test\TestSWP\Scripts\python.exe D:/Test/SWP/TestSWP/chorme/chorme.pyTraceback (most recent call l ...