You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 3中try/except无法捕获除零错误,是我理解有误吗?

问题原因与修复方案

你的代码里try-except块只包裹了函数定义,而ZeroDivisionError是在调用divide(6, 0)时才会触发的——这行调用代码不在try的监控范围内,所以异常直接抛出,没被捕获到。

修复方案一:将函数调用放入try块

把触发异常的代码放到try范围内,这样异常就能被捕获:

def divide(num, deno):
    return num / deno

try:
    result = int(divide(6, 0))
    print(result)
except ZeroDivisionError:
    print('Denominator cannot be 0')

修复方案二:在函数内部处理异常

如果希望函数本身具备异常处理能力,可以把try-except写到函数内部:

def divide(num, deno):
    try:
        return num / deno
    except ZeroDivisionError:
        print('Denominator cannot be 0')
        return None  # 返回None避免后续int()转换报错

result = divide(6, 0)
if result is not None:
    print(int(result))

两种方案的区别:

  • 方案一在调用层面处理异常,适合需要根据不同调用场景定制异常逻辑的情况
  • 方案二让函数自身更健壮,调用方无需额外处理除零异常

内容的提问来源于stack exchange,提问作者joah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 14:52:03