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

为何try代码块未触发except分支?需不退出函数抛异常

问题出在哪

你写的try块里只有个user_date == None的比较操作,这根本不会触发任何异常,所以不管user_date是不是None,except分支都不会执行。try-except是用来捕获代码运行时自动抛出的异常的,不是靠条件判断就能跳进去的。

怎么改

你要实现的是user_date不为None时抛出Unauthorized异常,不用绕try-except的弯子,直接判断后主动抛出就行。要是想抛异常但不退出函数,就在函数内部把这个异常接住:

直接抛异常(会终止当前函数,除非被外部捕获)

user_date = user.datetime
if user_date is not None:
    raise Unauthorized(f"Not a date")
print(user_date)  # 抛出异常的话这行代码不会执行

抛异常后自行捕获,不终止函数

user_date = user.datetime
try:
    if user_date is not None:
        raise Unauthorized(f"Not a date")
except Unauthorized as e:
    # 这里可以添加异常处理逻辑,比如打印日志
    print(f"捕获到异常: {e}")
# 后续代码可以继续执行
print(user_date)

补充小细节

判断变量是否为None,用is not None比== None更符合Python的最佳实践。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:46:07