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

如何在方法声明中使用throws IllegalArgumentException?示例实现答疑

如何编写带有throws IllegalArgumentException的方法?

刚好最近经常写这类参数校验的代码,来给你一步步讲清楚~

针对你说的「仅当参数d>0时返回d,否则抛出IllegalArgumentException」的需求,实现起来并不复杂,而且完全不需要用到try{}catch{}块,原因我后面会细说。先看具体的实现代码:

完整实现示例

public double getPrice(double d) throws IllegalArgumentException {
    // 先做参数合法性校验
    if (d <= 0) {
        // 主动抛出异常,建议带上明确的错误提示,方便调试
        throw new IllegalArgumentException("参数d必须大于0,当前传入的值是: " + d);
    }
    // 参数合法时正常返回
    return d;
}

关于try{}catch{}的疑问

为什么不需要try-catch?因为IllegalArgumentException属于RuntimeException(运行时异常),这类异常的设计初衷就是用来表示「调用者犯了错误」(比如传了非法参数)。我们这里是主动抛出异常来提醒调用者“你传的参数不对”,而不是捕获处理这个异常。try-catch是用来处理那些可能意外发生的异常、让程序能继续运行的,而这里的场景是我们主动触发异常,把处理的责任交给调用方——调用者可以选择捕获这个异常做处理,或者让它继续往上传播。

举个调用的例子,调用者可以这样处理异常:

public static void main(String[] args) {
    try {
        double validPrice = getPrice(10.5);
        System.out.println("正常价格: " + validPrice);
        
        // 传入非法参数,会触发异常
        double invalidPrice = getPrice(-3.0);
    } catch (IllegalArgumentException e) {
        // 捕获异常并处理,比如打印错误信息
        System.err.println("参数错误: " + e.getMessage());
    }
}

关键点总结

  • 方法声明里的throws IllegalArgumentException是可选的,但加上它能更清晰地告诉调用者这个方法可能会抛出该异常,提升代码的可读性和可维护性
  • 实现逻辑:先校验参数,不满足条件时用throw new IllegalArgumentException(...)主动抛出异常,参数合法则返回结果
  • 不需要在当前方法里用try{}catch{},除非你想在方法内部直接处理这个异常(但通常这类参数错误应该让调用者知晓并处理)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:58:28