谨慎编写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
就要再三确认是否会发生冲突。