9 异常处理
try…except…else语句
try:
fh = open("testfile", "w")
fh.write("这是一个测试文件,用于测试异常!!")
except IOError: # 可以带多种异常类型except(excep1, excep2),或者不带任何异常类型
print "Error: 没有找到文件或读取文件失败"
else: # else是可选的。没有异常时执行
print "内容写入文件成功"
fh.close()
try…finally语句
try…finally 语句无论是否发生异常都将执行最后的代码。
try:
fh = open("testfile", "w")
try:
fh.write("这是一个测试文件,用于测试异常!!")
finally:
print "关闭文件"
fh.close() # 这里如果异常再次被触发,将异常递交给上层的try,执行上层的except
except IOError:
print "Error: 没有找到文件或读取文件失败"
异常参数:except ValueError, Argument:
# 定义函数
def temp_convert(var):
try:
return int(var)
except ValueError, Argument:
print "参数没有包含数字\n", Argument
# 调用函数
temp_convert("xyz");
执行结果:
参数没有包含数字
invalid literal for int() with base 10: ‘xyz’
触发异常:通过raise。例:raise Exception, "Invalid level!"
通过raise语句自己触发异常
# 定义函数
def mye( level ):
if level < 1:
raise Exception,"Invalid level!"
# 触发异常后,后面的代码就不会再执行
try:
mye(0) # 触发异常
except Exception,err:
print 1,err
else:
print 2
执行结果:
1 Invalid level!