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

为何try-except无法捕获SyntaxError?Python异常处理问题咨询

问题原因及解决办法

为什么捕获不到SyntaxError?

SyntaxError属于解析阶段异常,Python解释器在加载、解析代码时就会检测到这类错误,此时你的函数还未进入执行流程,所以函数内部的except SyntaxError分支根本没有运行的机会,自然无法捕获该错误。

代码中的具体语法错误

你写的except ValueError,ZeroDivisionError:是Python 2的语法,Python 3中捕获多个异常必须用元组包裹,正确写法为:

except (ValueError, ZeroDivisionError):

修正后的完整代码

def bad_fun(n):
    try:
        try:
            print("we're good!")
            print(int("7u"))
        except (ValueError, ZeroDivisionError):
            print("Something wrong?")
        return 1 / n
    except ArithmeticError:
        print("Arithmetic Problem!")
    return None

bad_fun(0)

print("THE END.")

运行修正后的代码,会先触发int("7u")的ValueError,被内层except捕获并打印"Something wrong?";随后执行return 1 / n,因n=0触发ZeroDivisionError(属于ArithmeticError子类),被外层except捕获并打印"Arithmetic Problem!";最后程序继续执行,打印"THE END."。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:30:51