python - 为什么 finally 块中的 return 语句否定了 except 块中的引发?
问题描述
在我的 Python 脚本中,我想捕获一个异常,执行一些清理操作,然后raise
再次捕获异常。由于清理对于成功和失败路径都是常见的,因此我尝试将其放入finally
块中。但是,当我在块return
内添加语句时,被否定。finally
raise
这是一个示例(我使用的是 Python 3.6.5):
def test():
try:
raise Exception('TEST')
except:
raise
finally:
print('FINALLY!')
return ''
if __name__ == '__main__':
test()
print('SHOULD NOT REACH THIS LINE!')
知道为什么会这样吗?
解决方案
推荐阅读
- regex - 更改字符串后删除所有内容
- python - 熊猫:自定义 fillna() 函数?
- python - 如何使用 python pandas 将 sql 查询(或存储过程)的多个 SELECT 输出保存到单独的数据框(数据框列表)中
- ios - Big Sur 安装后加载时 XCode 崩溃
- python - 使用 discord.py 保存和使用冗长的句子
- amazon-web-services - AWS codebuild 是否允许使用 bitbucket 企业服务器?
- sql - 如何在 SQL 中将 If 语句与 Substring 命令结合起来?
- javascript - 如何使 time.getSeconds() 从 60 变为 0 而不是 0 到 60
- python-3.x - 使用 Python 的请求库向 Splunk 发送搜索查询
- python - Python - 预测小于训练数据的测试数据