【问题标题】:Python: One Try Multiple ExceptPython:一次尝试多次,除了
【发布时间】:2011-08-31 01:02:45
【问题描述】:

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

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

【问题讨论】:

  • @Eva611:不要道歉。 (1) 试一试。 (2) 发布您的问题的答案。
  • 它确实有效。用python解释器试了一下...
  • @Eva611 我认为你的问题很好。对我来说谷歌这个比在 Python 解释器中设置一个例子要快得多,所以我很高兴你问。 DrTysa 和其他人应该只是快速回答“是”而不是责骂你。
  • 大多数情况下,您的第一次猜测是错误的,或者错过了细微的差别,所以(和其他 15,000 人一样)我先尝试了 google!
  • 我试过谷歌,发现了这个问题。因此,我很高兴有人在 SO 这样公开的论坛上提出这个问题,我很高兴其他人链接到它,谷歌的算法将它作为我的第一个结果弹出。

标签: python syntax exception-handling


【解决方案1】:

是的,有可能。

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:。 (除了 SystemExitKeyboardInterrupt 这通常不是你想要的)
  • 你可能还想用e 做点什么,因为你给它起了个名字:)
  • 如果您只是为了避免在不处理特定异常的情况下出现错误,您可以编写嵌套级别的 try/except ,如answer 中所述。
猜你喜欢
  • 2015-08-31
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
相关资源
最近更新 更多