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
相关产品推荐
相关产品推荐

