谨慎编写finally关键字里面的代码
文章目录
刚刚写Python代码时正好写出了这样的代码。
1 | def function(): |
看到这样的代码我顿时陷入了思考!
显然在函数中raise与return这两个操作都属于退出函数的操作,执行后是不会再继续执行函数内的其他语句的。
而显然在学习Python的异常这方面的语法的时候我们都知道finally表示的是try里面的代码体无论执行是否发生异常最后都一定会执行finally里面的代码。
那么,最后到底是抛出异常还是返回值呢?又或者是发生其他的错误?
我写了三份示例代码,用于验证猜想
1 | >>> def func(): |
显然,当try,except或者else里面的raise或return代码与finally里面的代码发生冲突的时候,最后一定以执行finally里面的代码为准。
所以,在finally里面执行raise或者return的情况下,在try、except或者else里面写的raise和return都是毫无效果的。
最后:在finally里面写raise或者return就要再三确认是否会发生冲突。

