(Java)学习返回方法中的try-catch

(Java)学习返回方法中的try-catch,java,exception,return,try-catch,Java,Exception,Return,Try Catch,这是我的代码,我试图学习返回方法中的try/catch。我想捕获一个异常,其中十六进制字符串不是偶数,但我的异常并不是完全执行System.out.println(“十六进制字符串无效…等”),并且我无法删除最后一行返回null;因为它基本上意味着,如果偶数不是偶数,它仍然允许方法运行。我如何防止这种情况发生?我说得通吗 基本上,如果周长不是偶数,我不希望该方法通过 String hexString2 = "400000010"; String hexString3 = "1A5

这是我的代码,我试图学习返回方法中的try/catch。我想捕获一个异常,其中十六进制字符串不是偶数,但我的异常并不是完全执行System.out.println(“十六进制字符串无效…等”),并且我无法删除最后一行返回null;因为它基本上意味着,如果偶数不是偶数,它仍然允许方法运行。我如何防止这种情况发生?我说得通吗

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

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

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

公共静态字符串toLittleEndian(字符串hexString){
if(hexString.length()%2==0){
试一试{
String[]tempArr=新字符串[hexString.length()/2];
字符串结果=”;
整数计数=0;
对于(int i=0;i=0;i-=1){
结果+=tempArr[i];
}
返回结果;
}捕获(例外情况除外){
System.out.println(“十六进制字符串的长度无效!(必须是偶数)”;
}
}
返回null;
}

您已经编写了if条件,其状态如下

if (hexString.length() % 2 == 0)
不清楚您的语句十六进制字符串不是偶数,而条件是相反的

  • 若您希望hextstring的长度应该是偶数,那个么使用如下代码
if(hexString.length()%2==0){……}else{抛出新的 异常(“长度为奇数”);}

  • 如果希望hextstring应为偶数/奇数,则使用如下代码
如果(hextstring%2==0){……}其他{抛出新的 异常(“长度为奇数”);}


Throw new将向方法的calli抛出异常,但如果条件包装在try/catch块中,则异常将在相应的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)");
    }
}

不捕获异常,怎么样?避免此方法必须返回值或null的唯一方法是允许它抛出Exception@Stultuske什么意思?我只听说过try/catch或throw异常,你是说throw异常吗?谢谢我同意@Stultuske的观点。这意味着删除方法中的try/catch并添加抛出异常。公共静态字符串toLittleEndian(字符串hextstring)引发异常{..},然后需要在调用该方法的位置处理或添加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)");
    }
}