【问题标题】:About the syntax for catching two types of exceptions关于捕获两种异常的语法
【发布时间】:2014-11-23 09:11:48
【问题描述】:

所以这行得通:

try:
    raise OverflowError
except (IndexError, OverflowError):
    print 'caught'

caught

但这不是:

try:
    raise OverflowError
except IndexError, OverflowError:
    print 'caught'

OverflowError: 

第二个是做什么的?

【问题讨论】:

标签: python python-2.7


【解决方案1】:

try 语句可能有多个 except 子句,用于指定不同异常的处理程序。最多执行一个处理程序。处理程序只处理发生在相应 try 子句中的异常,而不处理同一 try 语句的其他处理程序中发生的异常。 except 子句可以将多个异常命名为带括号的元组,例如:

except (IndexError, OverflowError):
    pass

请注意,此元组周围的括号是必需的,因为 except ValueError, e: 是现代 Python 中通常写为 except IndexError as e: 的语法。

仍然支持旧语法以实现向后兼容性。这意味着except IndexError, OverflowError: 不等同于except (IndexError, OverflowError):,而是等同于except IndexError as OverflowError:,这不是您想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-26
    • 2011-06-30
    • 2021-12-18
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    相关资源
    最近更新 更多