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

Python触发异常时如何隐藏traceback仅输出核心报错信息

解决方案

两种常见实现方案,按需选择即可:

方案1:调用侧捕获异常按需输出

你只需要在调用division函数的位置加异常捕获逻辑,直接打印异常类型和异常信息,不会输出任何traceback内容:

def division(k, m):
    try:
        k / m
    except TypeError:
        raise ValueError ('hey') from None
    return k/ m

# 调用时捕获异常
try:
    # 示例:传字符串触发TypeError,进而抛出你定义的ValueError
    division("test", 2)
except Exception as e:
    print(f"{type(e).__name__}: {e}")

运行后输出结果为:

ValueError: hey

方案2:全局配置仅输出异常最后一行

如果不想每次调用都单独加捕获逻辑,可以修改Python默认的异常处理钩子,全局所有异常都只会输出最后一行内容:

import sys

# 自定义异常处理逻辑,替换默认的全量traceback输出
def custom_excepthook(exc_type, exc_value, exc_traceback):
    print(f"{exc_type.__name__}: {exc_value}", file=sys.stderr)

sys.excepthook = custom_excepthook

def division(k, m):
    try:
        k / m
    except TypeError:
        raise ValueError ('hey') from None
    return k/ m

# 直接调用即可,不需要单独捕获
division("test", 2)

运行后同样只会输出ValueError: hey。

注意:你原有代码里的raise ... from None已经切断了异常上下文关联,不会额外输出异常上下文的关联提示,配合上面的方案即可完全满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:24:05