首页 > 解决方案 > (Java)在return方法中学习try catch

问题描述

所以这是我的代码,我正在尝试在返回方法中学习 try/catch。我想捕获一个异常,其中十六进制字符串不是偶数,但我的异常没有完全执行 System.out.println("Hex String is invalid... etc"),我无法删除最后第二行返回 null;因为它基本上意味着即使它不是偶数,它仍然允许该方法运行。我该如何防止这种情况发生?我说得有道理吗?

基本上,如果周长不是偶数,我不希望该方法通过!

    String hexString2 = "400000010";
    String hexString3 = "1A5E4567";

    System.out.println(toLittleEndian(hexString2));

    public static String toLittleEndian(String hexString) {

    if (hexString.length() % 2 == 0) {
        try {

            String[] tempArr = new String[hexString.length() / 2];
            String result = "";
            int count = 0;

            for (int i = 0; i < hexString.length(); i += 2) {
                String temp = "";
                temp += hexString.charAt(i);
                temp += hexString.charAt(i + 1);
                tempArr[count] = temp;
                System.out.println(tempArr[count]);
                count++;
            }

            for (int i = ((hexString.length() / 2) - 1); i >= 0; i -= 1) {
                result += tempArr[i];
            }

            return result;

        } catch (Exception ex) {
            System.out.println("Hex String is invalid length! (Must be even number)");
        }
    }
    return null;
}

标签: javaexceptionreturntry-catch

解决方案


try...catch语句用于处理异常 - 您有一些代码可能会抛出异常,但该异常不是致命的,您的程序仍然可以继续,这是您使用的地方try...catch

但是,在您的情况下,听起来您希望程序在参数为奇数时立即停止执行。希望我已经正确理解了“不希望该方法通过”的意思。

你应该在这里抛出一个异常,如果调用者没有处理它,它将停止你的程序:

public static String toLittleEndian(String hexString) {

    if (hexString.length() % 2 == 0) {

        String[] tempArr = new String[hexString.length() / 2];
        String result = "";
        int count = 0;
        ...

    } else {
        throw new RuntimeException("Hex String is invalid length! (Must be even number)");
    }
}

推荐阅读