python 异常知识点
raise from
python 在3.0 之后引入了raise from 表达式:
raise exception from otherexception
当使用该语法时,第二个表达式指定了另一个异常类或实例,它会附加到引发异常的__cause__属性
注意:
python3.0不再支持raise Exc,Args形式,而该形式在Python2.6中仍然可用,在Python3.0中,使用 raise Exc(Args)调用。
with as
with语句格式:
with expression [as variable]:
with-block
variable是expression执行后返回的对象引用。
with as 作用是先执行启动程序,然后执行代码块,执行终止程序代码,无论该代码块是否引发异常。
例如:
myfile = open(r'C:\misc\data') try:
for line in myfile:
print(line)
finally:
myfile.close
可以使用:
with open(r'C;\misc\data') as myfile:
for line in myfile:
print(line)
自定义环境管理协议
就是自定义可以接入with语句的对象。
with语句实际工作方式:
1、计算表达式,所得到的对象称为环境管理器,它必须有__enter__和__exit__方法。
2、环境管理器的__enter方法被调用,如果as语句存在,则返回值会被赋值给as子句中的变量
3、代码块中嵌套代码会被执行。
4、如果with引发异常,__exit__(type, value, traceback)方法会被调用,如果此方法返回值为假,则异常会被重新触发,否则,异常会被终止。正常情况下,应该重新触发异常,这样的话才能传递到with语句之外。
5、如果with代码块没有引发异常,__exit__方法依然会被调用,其type、value、traceback都会以None传递。
例:
class TraceBlock:
def message(self, arg):
print('running',arg) def __enter__(self):
print('starting with block')
return self def __exit__(self, exc_type, exc_value, exc_th):
if exc_type is None:
print('exited normally\n')
else:
print('raise an exception!', exc_type)
return False with TraceBlock() as action:
action.message('test 1')
print('reached') with TraceBlock() as action:
action.message('test2')
raise TypeError
print('not reached')
执行结果:
starting with block
('running', 'test 1')
reached
exited normally starting with block
('ruTraceback (most recent call last):
File "D:\workspace\aptana\pythonTest\test\com\cy\cyg\TraceBlock.py", line 27, in <module>
raise TypeError
TypeError
nning', 'test2')
('raise an exception!', <type 'exceptions.TypeError'>)
python 异常知识点的更多相关文章
- python 类知识点总结
python 类知识点总结 面向对象思想: 1.设计的时候,一定要明确应用场景 2.由对象分析定义类的时候,找不到共同特征和技能不用强求 1.简述类.对象.实例化.实例这些名词的含义: 类:从一组对象 ...
- python Django知识点总结
python Django知识点总结 一.Django创建项目: CMD 终端:Django_admin startproject sitename(文件名) 其他常用命令: 其他常用命令: 通过类创 ...
- [转载] Python数据类型知识点全解
[转载] Python数据类型知识点全解 1.字符串 字符串常用功能 name = 'derek' print(name.capitalize()) #首字母大写 Derek print(name.c ...
- python 异常之进阶操作
1.文件分析 下面来做一些文件分析操作,分析整本书的信息. 知识点: string.split():将字符串分解为列表. open(filename,‘rb’)或者open(filename,enco ...
- python 异常
引用一段来自菜鸟教程的文章:http://www.runoob.com/python/python-exceptions.html Python 异常处理 python提供了两个非常重要的功能来处理p ...
- #21 Python异常
前言 运行程序时经常遇到各种错误,例如:ImportError(导入模块错误).IndexError(索引错误).NameError(变量错误).SyntaxError(语法错误).Indentati ...
- Python异常和异常处理
Python异常和异常处理2017年12月20日 22:17:08 Megustas_JJC 阅读数:114 标签: python 异常处理 更多 个人分类: Python 版权声明:本文为博主原创文 ...
- python——异常except语句用法与引发异常
except: #捕获所有异常 except: <异常名>: #捕获指定异常 except:<异常名1,异常名2):捕获异常1或者异常2 except:<异常名>,< ...
- JAVA项目中常用的异常知识点总结
JAVA项目中常用的异常知识点总结 1. java.lang.nullpointerexception这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用 ...
随机推荐
- AtCoder Regular Contest 076E Coneected?
题意 给出一个矩形区域和上面的m对整点,要求在矩形区域内画m条互不相交的线(可以是曲线)分别把m对点连接起来.只需要输出能不能做到. 分析 假设我们已经画了一条线.因为在这个题中有用的是平面区域之间的 ...
- DjangoORM字段参数介绍
参数介绍: 字段的参数: null: ->db是否可以为空 default: ->默认值 primary_key: ...
- Toast与Snackbar的那点事
背景 Toast是Android平台上的常用技术.从用户角度来看,Toast是用户与App交互最基本的提示控件:从开发者角度来看,Toast是开发过程中常用的调试手段之一.此外,Toast语法也非常简 ...
- 模块(3)-使用__future__
使用__future__ Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动.有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了. 从Pyt ...
- [Oracle整理]ORA-12705(字符集问题)
[Oracle整理]ORA-12705(字符集问题) 2017年5月11日 18:11 [Oracle整理]ORA-12705(字符集问题) 说明:本内容是工作用到的知识点整理,来自工作中和网络. ...
- opencv查找轮廓---cvFindContours && cvDrawCountours 用法及例子
http://blog.csdn.net/timidsmile/article/details/8519751 环境: vs2008 + opencv2.1 先看,这两个函数的用法(参考 opencv ...
- The 14th Zhejiang Provincial Collegiate Programming Contest Sponsored by TuSimple - F 贪心+二分
Heap Partition Time Limit: 2 Seconds Memory Limit: 65536 KB Special Judge A sequence S = { ...
- [vim]乱码问题
在vim输入中文乱码 1. 检查系统是否支持中文 locale -a 没有中文支持 安装中文包 apt-get install language-pack-zh-hans -y 2.这样可以输入中文了 ...
- gdb打印STL和boost容器
http://note.youdao.com/noteshare?id=b581e0db0084b6ba3011d9d27d372c91
- WebSocket解释及如何兼容低版本浏览器
WebSocket类似HTTP 协议,是为了弥补HTTP 协议的缺陷:通信只能由客户端发起,HTTP 协议做不到服务器主动向客户端推送信息. WebSocket 协议在2008年诞生,2011年成为国 ...