码迷,mamicode.com
首页 > 其他好文 > 详细

异常处理

时间:2017-11-09 00:47:13      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:visio   pos   存在   top   tmp   文件   访问   key   tee   

常见python 异常:
AttributeError     试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
IOError               输入/输出异常;基本上是无法打开文件
ImportError         无法引入模块或包;基本上是路径问题或名称错误
IndentationError 语法错误(的子类) ;代码没有正确对齐
IndexError         下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
KeyError             试图访问字典里不存在的键
KeyboardInterrupt Ctrl+C被按下
NameError         使用一个还未被赋予对象的变量
SyntaxError         Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
TypeError             传入对象类型与要求的不符合
UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
ValueError         传入一个调用者不期望的值,即使值的类型是正确的
 
异常处理
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理
try: 
    name = [a,b,c]
    name[5]      ##定义错误的索引,IndexError
    info_dic = {}
    info_dic[a]    ##定义错误的键值,KeyError
    
except IndexError:
    print Your list is out of range...
except KeyError:
    print Your dic is out of key... 

##except (IndexError,KeyError):      等同上面,同时抓取两个错误
 
 
抓取错误时从上往下,以第一个错误后,退出,不在向下继续运行
 
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
finally:
    print "Error: 没有找到文件或读取文件失败"
 
如果打开的文件没有可写权限,输出如下所示:
$ python test.py 
Error: 没有找到文件或读取文件失败
 
 
 
raise用来触发异常
语法如下:
raise [Exception [, args [, traceback]]]
语句中Exception是异常的类型(例如,NameError)参数是一个异常参数值。该参数是可选的,如果不提供,异常的参数是"None"。
最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
try:
    10/0
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没有打印出来。
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

异常处理

标签:visio   pos   存在   top   tmp   文件   访问   key   tee   

原文地址:http://www.cnblogs.com/song-liang/p/7807018.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!