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

调用函数传入无效选项参数时应抛出何种Python内置异常?

选用Python内置异常的建议

在这个场景下,应该用ValueError替代Exception,这是最贴合的选择。

原因很简单:ValueError的设计初衷就是处理「参数类型正确,但值不符合预期范围/要求」的情况。你的代码中,reduction参数是字符串类型(符合类型要求),但传入的值不在允许的["mean", "sum", "none"]集合里,完全符合ValueError的适用场景。

其他内置异常都不适合:

  • TypeError用于参数类型错误(比如传入数字而非字符串),和当前情况不匹配;
  • LookupError及其子类(如KeyError)用于查找操作失败,也不符合这里的参数校验场景;
  • 直接抛出Exception是不推荐的,因为它是所有非系统退出异常的基类,会捕获大量无关异常,不利于精准调试和错误处理。

修改后的代码如下:

#!/usr/bin/env python3
from torch import Tensor
from typing import Literal


def reduce(x: Tensor, reduction: Literal["mean", "sum", "none"] = "mean") -> Tensor:
    if reduction == "mean":
        return x.mean()
    elif reduction == "sum":
        return x.sum()
    elif reduction == "none":
        return x
    else:
        raise ValueError(f"Invalid choice: {reduction!r}.")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:18:09