ChatGPT解决这个技术问题 Extra ChatGPT

Python:一次尝试多次,除了

在 Python 中,一个 try 语句是否可以有多个 except 语句?如 :

try:
 #something1
 #something2
except ExceptionType1:
 #return xyz
except ExceptionType2:
 #return abc
@Eva611 我认为你的问题很好。对我来说谷歌这个比在 Python 解释器中设置一个例子要快得多,所以我很高兴你问。 DrTysa 和其他人应该只是快速回答“是”而不是责骂你。

v
vartec

对的,这是可能的。

try:
   ...
except FirstException:
   handle_first_one()

except SecondException:
   handle_second_one()

except (ThirdException, FourthException, FifthException) as e:
   handle_either_of_3rd_4th_or_5th()

except Exception:
   handle_all_other_exceptions()

请参阅:http://docs.python.org/tutorial/errors.html

“as”关键字用于将错误分配给变量,以便稍后可以在代码中更彻底地调查错误。另请注意,python 3 中需要三重异常情况的括号。此页面包含更多信息:Catch multiple exceptions in one line (except block)


如果您想在两种情况下都做同样的事情,那就是 except (SomeError, OtherError):。不回答 OP 问题,但可能会帮助一些通过 Google 到达这里的人。
例如,如果您必须将数据结构的多个版本转换为新结构,例如在更新代码版本时,您可以嵌套 try..excepts。
如果您想处理所有异常,您应该使用 except Exception: 而不是普通的 except:。 (普通的 except 甚至会捕获 SystemExitKeyboardInterrupt 这通常不是你想要的)
您可能还想对 e 做一些事情,因为您给它起了一个名字:)
如果您只是在不处理特定异常的情况下避免出错,您可以编写嵌套级别的 try/except,如本 answer 中所述。