[英]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)
我知道TimedOutException
是Exception
子类,应该删除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.