python 异常

来源:互联网 发布:火烈鸟彩妆 知乎 编辑:程序博客网 时间:2024/05/17 01:13

以操作文件为例,讲解python异常

finally语句

cleanup操作,finally无论是否发生except必执行

def divide(x, y):try:result = x / yexcept ZeroDivisionError:print "division by zero!"else:print "result is", resultfinally:print "executing finally clause"

else语句

如果没有出现except,则执行else

for arg in sys.argv[1:]:    try:        f = open(arg, 'r')    except IOError:        print 'cannot open', arg    else:        print arg, 'has', len(f.readlines()), 'lines'        f.close()

with语句

讨巧的办法

with open("myfile.txt") as f:    for line in f:        print line,

except语句

except后面接常见异常,则处理相应的异常;
如果except后面什么都没有,则处理所有的 错误和异常。

除了上述方式,也可以使用traceback和sys模块捕获和打印异常

traceback

try:    a = b    b = cexcept:    print traceback.print_exc()

sys

try:    a = b    b = cexcept:    info = sys.exc_info()    print info

python中常见的异常


1) NameError: 尝试访问一个未声明的变量

2)ZeroDivisionError: 除数为零

3)SyntaxError:Python语法错误

4)IndexError: 请求的索引超出序列范围

5)KeyError:请求一个不存在的字典关键字

6)IOError: 输入/输出错误

7)AttirbuteError: 尝试访问未知的对象属性

8)TypeError:在内建操作或者函数 应用于错误类型的对象时引发

9)ValueError: 在内建操作或者函数 应用于正确类型的对象,但对该对象引用不合适的值引发

raise

可以人为出发异常

使用raise语句

assert

主要功能在于确保程序中的某个条件一定为真时,才能让程序执行,否则终止程序执行并触发AssertionError错误

其可以视为相对高级点的异常处理


print "test assert"
a=input("number\n")
assert a<=10,'Error'

assert语句一般用于程序编写过程中的调试,将其添加到Python源代码中后,未避免影响编译性能,

建议尽量去除assert语句,并将__debug__这个内置变量设置为False,即在运行命令行中添加参数

python -0 test.py




0 0
原创粉丝点击