Python学习之异常处理的避坑指南
最终想了想,还是把这个章节单独拎出来,虽然字数不多。
在代码中,存在return也应当执行finally;
存在return时,else是不执行的;
无return时,else正常执行;
如果发生异常,则else也不执行
finally 与 return 的执行顺序
示例代码如下:
class Test(object):
def division(self, num1, num2):
try:
if num2 == 0:
return '除数不能为0'
avg = num1 / num2
return avg
except Exception as e:
print('ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(6, 0))
# >>> 执行结果如下:
# >>> FINALLY
# >>> 除数不能为0
注意:即使有return也要是会执行finally的,而且是在return之前执行它。那么最后的结果为。
else 与 return 的执行顺序
示例代码如下:
class Test(object):
def division(self, num1, num2):
try:
avg = num1 / num2
return avg
except Exception as e:
print('ERROR')
else:
print('No ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(6, 2))
# >>> 执行结果如下:
# >>> FINALLY
# >>> 3.0
注意:有return时else是不执行的。所以执行结果如上面的示例代码
那么 无 return 时,执行结果又怎样?
class Test(object):
def division(self, num1, num2):
try:
avg = num1 / num2
# return avg
except Exception as e:
print('ERROR')
else:
print('No ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(6, 2))
# >>> 执行结果如下:
# >>> No ERROR
# >>> FINALLY
# >>> None
从运行结果我们得出结论:无return时,正常执行else 。
如果是发生异常的情况下, else 也是不会执行的。代码示例如下:
class Test(object):
def division(self, num1, num2):
try:
avg = num1 / num2
return avg
except Exception as e:
print('ERROR')
else:
print('No ERROR')
finally:
print('FINALLY')
if __name__ == '__main__':
test = Test()
print(test.division(4, 0))
# >>> 执行结果如下:
# >>> ERROR
# >>> FINALLY
# >>> None
总结
1、finally 与 return 的执行 顺序;即使有 return 也要执行 finally 的, 而且是在 return 之前执行它。
2、else 与 return 的执行顺序;有 return 时, else 是不执行的。无 return 时, 正常执行的 else 如果发生异常则不会继续执行else。
到此这篇关于Python学习之异常处理的避坑指南的文章就介绍到这了,更多相关Python异常处理内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341