我想知道ZeroDivisionError的用途及其在以下示例代码中的工作原理?
try:
hopCounts.append(flow_stats.timesForwarded/ flow_stats.rxPackets)
except ZeroDivisionError:
flow_stats.jitterSum.GetSeconds() == 0
答案 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
但是,该代码不会执行任何操作,它只会返回True
或False
...它与在python中编写True
一样具有相同的效果本身。
要了解详情,请阅读http://www.pythonforbeginners.com/error-handling/exception-handling-in-python