2011-05-23 66 views
74

在Python中,是否可以为一个try语句使用多个except语句?如:Python:一个尝试多个例外

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

假设something1是行'except something1'中的异常类? – 2011-05-23 10:12:18

+1

@Sentinel - 够公平的。如果我滥用社区,请道歉。 – Eva611 2011-05-23 10:24:14

+3

@ Eva611:不要道歉。 (1)尝试一下。 (2)发布你的问题的答案。 – 2011-05-23 11:11:34

回答

149

是的,这是可能的。

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

的“为”关键字用于误差分配给一个变量使得误差可以在代码被更彻底调查以后。另请注意,python 3中需要三重异常情况的括号。此页面有更多信息:Catch multiple exceptions in one line (except block)

+28

如果你想在两种情况下都做同样的事情,那就是'except(SomeError,OtherError):'。不回答OP问题,但可能会帮助一些通过Google访问的人。 – Mark 2013-09-25 14:43:49

+3

@Mark:好的一点,补充说明一下。 – vartec 2013-09-25 14:58:49

+0

例如,如果您必须将数据结构的多个版本转换为新的结构,则例如在更新代码版本时,可以嵌套try..excepts。 – 2015-12-04 14:00:12