我做这样的事情我是愚蠢的吗?我觉得我可能没有从根本上理解try catch
块的目的。
我有一个脚本,我希望在守护程序上运行自动驾驶,有时会发生的事情是检查列表中的某些资源是否已完全分配。如果资源是完全分配的,它不能继续一件事,但它可以做其他事情。因为我也在使用API调用某些内容,所以API抛出的Exception
非常通用(就像API_Exception
)。在这种情况下,多个try
块是否毫无意义?
主要问题是break
不允许我退出循环
for:
try:
stuff()
except ExceptionA:
handle()
break
except ExceptionB:
report()
sys.exit()
try:
other_stuff()
except ExceptionA:
handle_in_a_different_way()
break
except ExceptionC:
report()
sys.exit()
other_code_that_should_execute_if_there_is_a_break()
在这种情况下,我应该只是组合这两个块并捕获ExceptionA
一次吗? ExceptionA
可能没有易于解析的参数。
for:
try:
stuff()
other_stuff()
except ExceptionA:
if ExceptionA has param
handle()
elif ExceptionA has other param
handle_in_a_different_way()
except ExceptionB:
report()
sys.exit()
except ExceptionC:
report()
sys.exit()
答案 0 :(得分:0)
我在异常方面不是很有经验,但我在堆栈中发现了一些可能有用的东西。
Catch multiple exceptions in one line (except block)
它还取决于你当前使用的是哪个版本,在python 2中你似乎可以使用逗号来分隔异常,但在python 3中,人们建议使用'as'来将它们设置在一个变量中,那么你可以验证如何对待它们