gpt4 book ai didi

python - 避免 try-except 嵌套

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:52 25 4
gpt4 key购买 nike

给定一个未知文件类型的文件,我想使用多个处理程序之一打开该文件。如果无法打开文件,每个处理程序都会引发异常。我想尝试所有这些,如果没有成功,则引发异常。

我想出的设计是

filename = 'something.something'
try:
content = open_data_file(filename)
handle_data_content(content)
except IOError:
try:
content = open_sound_file(filename)
handle_sound_content(content)
except IOError:
try:
content = open_image_file(filename)
handle_image_content(content)
except IOError:
...

这个级联似乎不是正确的方法。

有什么建议吗?

最佳答案

也许您可以将所有处理程序分组并在 for 循环中评估它们,如果没有成功则在最后引发异常。您还可以挂起引发的异常以从中获取一些信息,如下所示:

filename = 'something.something'
handlers = [(open_data_file, handle_data_context),
(open_sound_file, handle_sound_content),
(open_image_file, handle_image_content)
]
for o, h in handlers:
try:
o(filename)
h(filename)
break
except IOError as e:
pass
else:
# Raise the exception we got within. Also saves sub-class information.
raise e

关于python - 避免 try-except 嵌套,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com