说明:本blog基于python3版本
前言
优雅地处理python的异常或错误是构建稳定程序的重要组成部分.本文主要介绍三种处理异常或错误的格式,方便应用和记忆. 比如我们写一个方法 make_float, 使输入值转化为浮点数并返回 代码如下
def make_float(x):
return float(x)
但可能会发生异常; 比如, 如果我们把x赋值为string类型, 那么就会产生ValueError; 如果我们把x赋值为tuple类型,就会产生TypeError; 等等 下边我们分别使用三种格式/方法来处理异常
第一种、try + except 格式处理
def make_float(x):
try:
return float(x)
except:
return x
以上代码就是说, 我们调用make_float函数时, 首先执行try语句后边的代码,如果不发生异常,就直接return float(x) ; 但如果发生异常(无论什么异常),则跳出try语句, 执行except语句后边的 return x. 该方法可以成功规避异常.
第二种、try + except(具体异常) 格式处理
def make_float(x):
try:
return float(x)
except(ValueError):
return x
以上代码就是说, 我们调用make_float函数时, 首先执行try语句后边的代码,如果不发生异常,就直接return float(x) ; 但如果发生ValueError异常(仅仅是ValueErro),则跳出try语句, 执行except语句后边的 return x. 如果发生TypeError, 那么程序依然会报错, 发生TypeError.程序中断.
第三种、try + except+else + finally 格式处理
def make_float(x):
try:
a = float(x)
except:
return x
else :
return a+2
finally:
print("OK")
以上代码就是说, 我们调用make_float函数时, 首先执行try语句后边的代码,如果不发生异常,就继续执行 else 后边语句 return a+2, 最后执行 finally后的语句, print(“OK”); 但如果发生异常(无论什么异常),则跳出try语句, 执行except语句后边的 return x, 最后也依然执行 finally后边语句 print(“OK”). 因此, 我们可以总结, 无论发不发生异常, finally后边语句都要执行.
我们演示一下输入x为string类型的效果.
def make_float(x):
try:
a = float(x)
except:
return x
else :
return a+2
finally:
print("OK")
a = make_float("sdf")
print(a)
结果如下,
OK
sdf
没错,正是我们想要的~
总结
写在最后,希望本blog对你的python学习有所帮助,欢迎点赞关注~
|