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

Java异常处理问题:如何抛出RuntimeException后仍执行后续代码

解决方案:修正len_check函数并确保所有调用执行完成

问题分析

原代码存在两个核心问题:

  1. len_check函数的判断顺序错误:先调用str.length()再检查str == null,会导致输入null时直接抛出NullPointerException,无法触发需求定义的异常;同时长度超限的异常消息不符合要求。
  2. main方法中未对每个调用做独立异常处理,单个调用抛出异常后会终止整个程序,导致后续调用无法执行。

修正后的完整代码

class Main {

    public static String len_check(String str) {
        // 先判断null,避免空指针异常
        if (str == null) {
            throw new RuntimeException("null");
        }
        // 再判断长度是否超限
        if (str.length() > 20) {
            throw new RuntimeException("More than 20 words");
        }
        return str;
    }

    public static void main(String[] args) {
        // 第一个调用:正常返回字符串
        try {
            System.out.println(len_check("abcdefghijklmnopqrs"));
        } catch (RuntimeException e) {
            System.out.println("异常:" + e.getMessage());
        }

        // 第二个调用:触发长度超限异常
        try {
            System.out.println(len_check("abcdefghijklmnopqrsuvw"));
        } catch (RuntimeException e) {
            System.out.println("异常:" + e.getMessage());
        }

        // 第三个调用:触发null异常
        try {
            System.out.println(len_check(null));
        } catch (RuntimeException e) {
            System.out.println("异常:" + e.getMessage());
        }
    }
}

关键修改说明

  • 调整len_check判断逻辑:先检查输入是否为null,再判断字符串长度,确保需求定义的异常能被正确抛出,同时修正了长度超限的异常消息。
  • 移除冗余try-catch:原函数内的try-catch仅捕获并重新抛出异常,无实际作用,直接移除简化代码。
  • 独立处理每个调用的异常:在main方法中为每个len_check调用单独添加try-catch块,单个调用的异常只会触发对应的捕获逻辑,不会中断整个程序,确保三个调用都能执行完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:17:25