我有一个java代码,我正在调用数据库函数进行数据插入。 函数可能会根据Database中的异常返回错误代码。为了在屏幕上显示这些错误,我写了下面的代码。
255.255.255.0 the_name
我的要求是减少多个运算符,如果条件,if语句中的运算符不超过3个,使用较少内存的轻量代码。
请建议是否有人有任何创造性的解决方案。
答案 0 :(得分:3)
for (int i=1; i<=6; i++){
String s = "RUREF0000" + i;
//Define your error
if(s.equals(DBerrorCode)){
throw new DataUpdateException(your error);
}
对于i = [27,30] ,相同
最后你可以为案件设置一个if条件(i&lt; 1,i&gt; 6和i&lt; 27,i&gt; 30) 作为默认错误
您也可以定义切换案例https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html
但这不会减少您的代码长度。这取决于你的任务
答案 1 :(得分:2)
我会使用地图。
map.put("RUREF00001",ErrorRUREF00001);
map.put("RUREF00002",ErrorRUREF00002);
map.put("RUREF00003",ErrorRUREF00004);
然后你只需写一行
throw new DataUpdateException(map.get(DBerrorCode));
附注:Java变量名称以小写字母开头。
答案 2 :(得分:0)
事实上,您可以像其他答案一样使用Map
。
假设传递给ErrorRUREF00001
的参数(例如DataUpdateException
)是String
:
Map<String, String> errorMap = new HashMap<>();
errorMap.put("RUREF00001", ErrorRUREF00001);
// populate other values ....
然后你可能有一个检查映射消息的方法,如果找到一个,则使用该方法,如果没有找到则使用另一个值:
public void manageError(final String dbErrorCode) {
if (errorMap.containsKey(dbErrorCode)) {
throw new DataUpdateException(errorMap.get(dbErrorCode));
} else {
throw new DataUpdateException(DATA_INSERT_ERROR);
}
}
最后代替您if
else
语句,只需致电
manageError(DatabaseReturnErrorCode);
答案 3 :(得分:0)
如果省略onPause()
语句,您可以使用Enum。
您的逻辑应如下所示:
if-else
Enum.values()
使用此代码,例如参数这是一个小型演示:
throw new Exception()
因此,您的所有enum ErrorCodes {
RUREF_00001("RUREF00001"),
RUREF_00002("RUREF00002"),
RUREF_00003("RUREF00003");
// ...
private String errorName;
ErrorCodes(String errorName) {
this.errorName = errorName;
}
public String getErrorName() {
return errorName;
}
}
public class ErrorHandler {
public static void main(String[] args) {
String dbErrorCode = "ruref00003"; // get the error code from Database
for (ErrorCodes code : ErrorCodes.values()) {
if (code.getErrorName().equalsIgnoreCase(dbErrorCode)) {
throw new DataUpdateException(dbErrorCode);
}
}
//default error
throw new DataUpdateException(DATA_INSERT_ERROR);
}
}
语句都将被替换为几行:
if-else
这是更优雅的解决方案。