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

Python中try-except未捕获函数调用时的异常问题求助

问题原因
  • 你的try-except只包裹了函数定义,但函数定义本身不会执行函数内部的逻辑,只有调用函数时才会执行。而实际触发索引越界异常的make_pie(4)调用是在try-except结构之外,所以异常无法被捕获。
  • 简单说:异常发生的位置不在try块的监控范围内,except自然不会生效。
解决方案

有两种合理的修复方式,根据需求选择:

方式一:将函数调用放入try块

把触发逻辑的函数调用放到try里,让异常落在监控范围内:

fruits = ["Apple", "Pear", "Orange"]

def make_pie(index):
    fruit = fruits[index]
    print(fruit + " pie")

try:
    make_pie(4)
except IndexError:  # 推荐捕获具体异常类型,避免隐藏未知问题
    print("Fruit pie")

方式二:在函数内部处理异常

如果希望每次调用函数时都自动处理异常,可以把try-except放到函数内部:

fruits = ["Apple", "Pear", "Orange"]

def make_pie(index):
    try:
        fruit = fruits[index]
        print(fruit + " pie")
    except IndexError:
        print("Fruit pie")

make_pie(4)
注意事项

不要使用裸except(即不指定异常类型),这样会捕获所有类型的异常(包括键盘中断、系统退出等),容易隐藏代码中的其他问题,建议始终捕获具体的异常类型(比如这里的IndexError)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:09:24