Python:一次尝试多项


194

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

try:
 #something1
 #something2
except ExceptionType1:
 #return xyz
except ExceptionType2:
 #return abc

7
@ Eva611:不要道歉。(1)尝试一下。(2)发布您问题的答案。
S.Lott

6
确实有效。使用python解释器进行了尝试...
Eva611

37
@ Eva611我认为您的问题很好。对于我来说,这比Google快得多,而不是在Python解释器中设置示例,所以我很高兴您提出要求。DrTysa和其他人应该只是快速回答“是”,而不是骂你。
13年

4
在大多数情况下,您的第一个猜测将是错误的,或者会错过细微的差别,因此(例如15,000个其他)我首先尝试了google!
克里斯

8
我尝试了谷歌,发现了这个问题。因此,我很高兴其他人在如此公开的论坛上提出了这样的要求,并且我很高兴与它链接的其他人将google的算法弹出作为我的第一个结果。
Kingledion '16

Answers:


328

是的,有可能。

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中需要三重异常情况的括号。此页面具有更多信息:在一行中捕获多个异常(块除外)


75
如果您想在两种情况下都做相同的事情,那就是except (SomeError, OtherError):。不回答OP问题,但可能会帮助一些通过Google到达这里的人。
2013年

例如,如果必须将数据结构的多个版本转换为新结构,则例如在更新代码版本时,可以嵌套try..excepts。
萨克森罗夫(Rolf of Saxony)2015年

5
如果要处理所有异常,则应使用except Exception:而不是plain except:。(平原除外会赶上甚至SystemExitKeyboardInterrupt它通常不是你想要的)
polvoazul

您可能还想做点事,e因为您给它起了个名字:)
HelloGoodbye
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.