我很难在 Java 中使用 try-catch 语法解决问题

问题描述 投票:0回答:1

如果字符串长度超过20,因为字符串是用str输入的

生成带有字符串“超过 20 个单词”的 RuntimeException

如果 str 为 null,则会生成 RuntimeException,字符串为“null”

如果这两种情况都不是这种情况,请编写一个 len_check 函数,按原样返回接收到的字符串。

输出示例。

System.out.println(len_check("abcdefghijklmnopqrs"));
abcdefghijklmnopqrs
System.out.println(len_check("abcdefghijklmnopqrsuvw"));
Exception in thread "main" java.lang.RuntimeException: More than 20 words
    at ...
System.out.println(len_check(null));
Exception in thread "main" java.lang.RuntimeException: null
    at ...
import java.lang.*;

class Main {

    public static String len_check(String str) {
        try {
            if (str.length() > 20) {
                throw new RuntimeException("Length is greater than 20");
            } else if (str == null) {
                throw new RuntimeException("null");
            } else {
                return str;
            }
        } catch (RuntimeException e) {
            throw e;
        }
    }

    public static void main(String[] args) {
        System.out.println(len_check("abcdefghijklmnopqrs"));// abcdefghijklmnopqrs
        System.out.println(len_check("abcdefghijklmnopqrsuvw"));
        System.out.println(len_check(null));
    }
}

输出时第二条打印语句发生错误(这是我故意的错误)并停止。我希望将其打印出来,直到出现最后一个错误。

java try-catch runtimeexception
1个回答
0
投票

为了防止程序在第一个错误后退出,您应该在调用本身上使用 try-catch 块,而不是在抛出错误的函数内部。如果您在抛出它们的同一位置处理它们,那么您可能根本不抛出它们,并且如果您尝试在同一个 try-catch 块中处理所有三个函数调用,它将在第一个错误后退出。

import java.lang.*;

class Main {
    public static String len_check(String str) {
        if (str.length() > 20) {
            throw new RuntimeException("Length is greater than 20");
        } else if (str == null) {
            throw new RuntimeException("null");
        } else {
            return str;
        }
    }

    public static void main(String[] args) {
        try {
            System.out.println(len_check("abcdefghijklmnopqrs"));// abcdefghijklmnopqrs
        } catch (Exception e) {
            System.out.println("Error: " + e);
        }

        try {
            System.out.println(len_check("abcdefghijklmnopqrsuvw"));
        } catch (Exception e) {
            System.out.println("Error: " + e);
        }

        try {
            System.out.println(len_check(null));
        } catch (Exception e) {
            System.out.println("Error: " + e);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.