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

为什么这段Python代码中的TypeError异常捕获逻辑没有生效?

问题原因分析

核心逻辑是:Python 函数调用时会先执行所有参数的计算逻辑,再将计算结果传入函数内部,你的代码异常未被捕获的原因如下:

  • 调用 check(a+b) 时,程序会先计算 a + b 的值,字符串和整数相加直接触发 TypeError,报错发生时还没有进入 check 函数的执行流程
  • check 内部的 try/except 只能捕获函数内部代码抛出的异常,根本捕获不到函数调用前参数计算阶段的报错
修正方案

你可以把需要执行的运算逻辑封装成可调用对象传入,让运算在 check 内部的 try 块中执行,修正后的代码如下:

a = '123'
b = 123

def check(func):
    try:
        data = func()
        print(type(data))
    except TypeError as error:
        print(f'Error: {error}')

# 把运算逻辑封装成lambda匿名函数传入,运算会在check内部执行
check(lambda: a + b)

运行后即可得到预期的异常输出:Error: can only concatenate str (not "int") to str

内容的提问来源于stack exchange,提问作者Sebastian Kvalsøy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:54:05