繁体   English   中英

python处理多个异常

[英]python handle multi exceptions

我写的代码如下:

try:
  do_somethong
except TimedOutException as e:
  logger.exception(e)
except Exception as e:
  logger.exception(e)

这与下面的代码相同吗?

try:
  do_somethong
except (TimedOutException, Exception) as e:
  logger.exception(e)

我知道TimedOutExceptionException子类,应该删除TimedOutException吗? 有人可以为我解释吗? 提前致谢!

警告: except Exception as e:不应使用,因为它将所有从其继承的Exception进行分组(除少数与python相关的Exception外,大多数例外都继承自Exception

如果仍然想使用Exception,则不需要TimedOutException。

处理异常时,将处理作为except子句中使用的类的实例的所有异常,或该Exception任何子类,因此具有Exception基本上可以处理99%的异常。 这就是为什么不建议将Exception用作此目的的类的原因,除非您只是记录并使用raise再次raise相同的异常。

使用多个except子句时,顺序很重要,因为任何异常只会由与该类型匹配的第一个except子句处理。

如果要应用其他处理,则使用多个except块:

try:
  do_somethong
except TimedOutException as e:
  # special processing for timeout
  logger.exception(e)
except Exception as e:
  # different processing for all other exception
  logger.exception(e)
  exit(1) # say it is fatal for example...

如果将相同的处理组应用于同一块中的所有异常,并且不添加已经存在的类的异常子类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM