ZeroDivisionError 是如何处理的

How the ZeroDivisionError process

我想知道 ZeroDivisionError 的用途是什么,它在下面的示例代码中是如何工作的?

try:
   hopCounts.append(flow_stats.timesForwarded/ flow_stats.rxPackets)
except ZeroDivisionError:            
    flow_stats.jitterSum.GetSeconds() == 0

除以零不限于任何语言,此异常发生在machine/processor级别。当处理器检测到 'DivideByZero' 时,它会抛出一个 DivideByZero 异常,其处理程序已经在操作系统代码中。

用户在应用程序级别(无论是在 C++、python 还是任何其他高级语言中)提供的异常处理程序几乎不是发生此类异常时该应用程序的恢复路径。

对于您提供的代码示例:

try:
    # try block
    hopCounts.append(flow_stats.timesForwarded / flow_stats.rxPackets)
except ZeroDivisionError:
    # exception block
    flow_stats.jitterSum.GetSeconds() == 0

try块会运行括号内的代码先flow_stats.timesForwarded / flow_stats.rxPackets。 如果 flow_stats.rxPackets 为零,则将引发 ZeroDivisionError 异常。 否则,计算出的值将附加到 hopCounts 列表中。 异常块将不会被执行。

如果引发 ZeroDivisionError 异常,该异常将被 except 语句捕获,并且 异常块 代码将 运行 flow_stats.jitterSum.GetSeconds() == 0

然而,该代码不会做任何事情,它只会 return TrueFalse... 它与简单地编写 True 具有相同的效果在 python 单独一行。

要了解更多信息,请阅读 http://www.pythonforbeginners.com/error-handling/exception-handling-in-python