捕获 zerodivisionerror 是处理除零错误最直接安全的方式,应专门捕获而非笼统使用 except:;遵循 eafp 原则,优先尝试运算再异常处理。

在 Python 中,用 try...except 捕获 ZeroDivisionError 是处理除数为零最直接、安全的方式。
明确捕获 ZeroDivisionError
Python 在执行除法(/、//、%)时,若除数为 0,会抛出内置异常 ZeroDivisionError。应专门捕获该异常,而非笼统地用 except:,避免掩盖其他潜在错误。
- ✅ 正确写法:
except ZeroDivisionError: - ❌ 不推荐:
except:或except Exception:(可能吞掉类型错误、变量未定义等)
在计算前不预判,而是靠异常处理兜底
虽然可以用 if divisor != 0: 提前判断,但有时逻辑复杂(如多层嵌套、动态表达式),或需保持代码简洁性。此时“EAFP 原则”(Easier to Ask for Forgiveness than Permission)更适用:直接运算,出错再处理。
例如:
def safe_divide(a, b):
try:
return a / b
except ZeroDivisionError:
return float('inf') if a > 0 else float('-inf') if a
提供有意义的错误反馈或默认值
捕获异常后,不要只写 pass 或空 except。根据业务场景选择合理响应:
- 返回替代值(如
None、0、特殊浮点值) - 打印提示信息并继续执行(适合非关键计算)
- 重新抛出自定义异常(如
raise ValueError("除数不能为零")),便于上层统一处理
注意整数与浮点数的细微差异
对整数使用 // 或 % 时同样触发 ZeroDivisionError;而 0.0 / 0.0 不报错,但结果是 nan(需额外用 math.isnan() 检查)。因此,若输入可能含浮点零,建议结合数值校验与异常处理。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











