21-python_异常处理
异常处理
filename = raw_input(“input file name:”)
f = None
try :
print “trying to open”, filename
f = open(filename)
except NameError, msg :
print “file name is error!!”
except IOError, msg :
print “open file failed!!”
finally :
if None != f :
f.close()
- 异常以及异常抛出
异常抛出机制, 为程序开发人员提供了一种在运行时发现错误,
进行恢复处理, 然后继续执行的能力.
- 抛出机制
- 如果在运行时发生异常,解释器会查找相应的处理语句(称为handler)
- 如果在当前函数里没有找到handler, 它就会将异常抛给调用者.
- 如果最外层(全面main) 还是没有handler, 解释器就会退出,
同时打印traceback
- 注意: 一般, 错误都会导致异常, 但一个异常不一定代表错误.
异常有时是一个警告,有时是一个终止信号, 比如退出循环等.
- 语法 - 捕获与处理
3.1 try except
try :
pass
except errorType1, msg1:
pass
except errorType2, msg2:
pass
…
3.2 try except finally
try :
pass
except errorType1, msg1:
pass
except errorType2, msg2:
pass
…
finally :
pass
- raise 抛出异常
- 手动抛出异常
raise NameError(“Hello, I’m a name error”)
Traceback (most recent call last):
File ““, line 1, in
NameError: Hello, I’m a name error
- 常见异常类型
- AssertionError assert语句失败
- AttributeError 试图访问一个对象没有的属性
- IOError I/O异常, 基本是无法打开文件
- ImportError 无法引入模块或包, 基本是路径问题
- IndentationError 语法错误, 代码没有正确对齐, 缩进有问题
- IndexError 下标索引超出序列边界
- KeyError 试图访问字典中不存在的键
- KeyboardInterrupt Ctrl+C 被按下
- NameError 使用一个未初始化的变量
- SyntaxError 语法错误
- TypeError 传入的对象类型与要求不符
- UnboundLocalError 试图访问一个还未设置的全局变量
- ValueError 传入一个不被期望的值, 即使类型正确
还没有评论,来说两句吧...