java - (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;
}
解决方案
该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)");
}
}
推荐阅读
- python - Django——关系“”不存在
- javascript - 有没有办法停止覆盖对象值?
- android - 仅当本地缓存数据超过 5 分钟或根本不存在时,才使改造从服务器获取新数据
- javascript - 迭代嵌套的 json 对象并在其中操作数据
- python-3.x - Django ORM 查询集
- python - Numpy没有以科学计数法精确打印数组
- oauth - Power BI:提供的凭据不能用于源
- mysql - MySQL WHERE 查询问题(1241:操作数应包含 1 列)
- javascript - 如何使用亚马逊 ses 发送 css 和网格
- sql - DELETE AFTER - TRIGGER