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异常处理是那些类的对象 ...
随机推荐
- MySQL学习(十三)
编码问题 乱码是如何形成的 1 解码时与实际编码不一致 可修复 2 传输过程中,编码不一致,导致字节丢失,不可修复,如把utf8转为GB2312 连接器的特性:连接客户端和服务器,客户端的字符先发给连 ...
- Qt5模型/视图结构-视图(View)
实现自定义的View,可继承自QAbstractItemView类,对所需的纯虚函数进行重定义与实现,对于QAbstractItemView类中的纯虚函数,在子类中必须进行重定义,但不一定要实现,可根 ...
- Lambda语法篇
函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口. Lambda语法 包含三个部分 一个括号内用逗号分隔 ...
- Python全栈开发-Day4-Python基础4
本节内容 匿名函数 装饰器 列表生成式.迭代器&生成器 内置函数 Json & pickle 数据序列化 1. 匿名函数 匿名函数就是不需要显式的指定函数 1 2 3 4 5 6 7 ...
- telnet作用和 命令使用方法详解
什么是Telnet? 对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协议,但是对于入侵者而言,Telnet只是一种远程登录的工具.一旦入侵者与远程主机建立了Telnet ...
- 常见的ORACLE语句
基本 --新建表: create table table1( id varchar(300) primary key, name varchar(200) not null); --插入数据 inse ...
- javascript获取id元素
function $(id){ return document.getElementById(id); }导致所有的js不能用解决办法.... function $(id){ return doc ...
- English trip EM2-LP-6B Teacher:Gabriele
Gabriele Gabi n. 加布里尔,加布里埃尔,加布里埃,加布里埃莱(人名) 课上内容(Lesson) 词汇(Key Word ) is married? 结 ...
- hadoop挂载多硬盘,ZZ-- multiple disks per node
hadoop挂载多硬盘 ...multiple disks per node multiple disks per node Read more at: http://www.queryhome.c ...
- Redis之下载安装及基本使用
redis window系统的redis是微软团队根据官方的linux版本高仿的 官方原版: https://redis.io/ 中文官网:http://www.redis.cn 1.1 redis下 ...