ZeroDivisionError进程如何处理

时间:2018-01-17 06:24:36

标签: python ns-3

我想知道ZeroDivisionError的用途及其在以下示例代码中的工作原理?

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

您提供的代码示例:

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

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

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

但是,该代码不会执行任何操作,它只会返回TrueFalse ...它与在python中编写True一样具有相同的效果本身。

要了解详情,请阅读http://www.pythonforbeginners.com/error-handling/exception-handling-in-python