一个try块,带有多个except子句。

356
在Python中,一个try语句是否可以有多个except语句?例如:
try:
    #something1
    #something2
except ExceptionType1:
    #return xyz
except ExceptionType2:
    #return abc

如果要以相同的方式处理多个异常,请参见在一行中捕获多个异常(except块)


这个回答解决了你的问题吗?在一行中捕获多个异常(except块) - ggorlen
1个回答

564

是的,这是可能的。

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)


134
如果你想在两种情况下执行相同的操作,可以使用 except (SomeError, OtherError):。这并没有回答 OP 的问题,但可能会帮助一些通过谷歌搜索到这里的人们。 - Mark
例如,如果您必须将多个版本的数据结构转换为新结构(例如,在更新代码版本时),则可以嵌套try..excepts。 - Rolf of Saxony
8
如果你想处理所有的异常,你应该使用except Exception:而不是仅仅使用except:。 (仅使用except:会捕获甚至包括SystemExitKeyboardInterrupt在内的异常,这通常不是你想要的。) - polvoazul
2
你或许想对 e 做些什么,因为你给它起了一个名字 :) - HelloGoodbye
如果你只是想避免出现错误而不处理特定的异常,你可以编写嵌套的 try/except 代码块,正如这个答案中所提到的。 - Elias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接