Java异常处理问题:如何抛出RuntimeException后仍执行后续代码
解决方案:修正
len_check函数并确保所有调用执行完成 问题分析
原代码存在两个核心问题:
len_check函数的判断顺序错误:先调用str.length()再检查str == null,会导致输入null时直接抛出NullPointerException,无法触发需求定义的异常;同时长度超限的异常消息不符合要求。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
相关产品推荐
相关产品推荐

