我有这样的事情:
...
while (itr.hasNext()) {
...
try {
if (userInput.equalsIgnoreCase(theData.getName())
|| (country.getName().toString()).equalsIgnoreCase(theData.getName()))
{
result = new Country(PointT, dist);
break;
} else {
for (int i = 0; i < repl.size(); i++) {
if (repl.get(i).toString().contains(theData.getName())) {
theName = true;
result = new Country(PointTt, dist, theName);
break;
} else if (theParts.get(i).toString().equalsIgnoreCase(theData.getName())) {
result = new Country(PointT, dist);
break;
}
}
}
} catch (NoSuchElementException ex) {
logger.error("Does not exist in database", ex);
throw ex;
} catch (NullPointerException ex) {
logger.error("Does not exist in database", ex);
throw ex;
}catch (Exception ex) {
logger.error("Does not exist in database", ex);
throw ex;
}
}
...
所以,我正在与theData.getName()
进行比较,userInput
只是一个字符串,country.getName()
也是一个字符串,repl.get(i)
是一个List<String>
},theParts.get(i)
也是List<String>
。
我无法找到解决方案来使其工作。当数据库(theData.getName())
中不存在字符串时抛出异常。
要阅读theData
:
我正在使用FileInputStream fis = new FileInputStream(filelocation);
然后,只提取字符串并存储它们:
ArrayList<String> theNames = new ArrayList<String>();
然后我将theNames
与其他迭代器合并并创建
ArrayList<theNamesLoc> theNamesLocList = new ArrayList<theNamesLoc>();
,这就是我申请的数组列表:
Iterator<TheNamesLoc> itr = theNamesLocList.iterator();
while (itr.hasNext()) {
..}
答案 0 :(得分:0)
修改强>
假设repl是保存数据库中所有响应的列表,可能有两种情况:
第一种情况:
boolean isPresent = false;
for(String elem: list){
if(elem.contains("xyz")){//check each string if it contains the element
isPresent = true;
break;
}
}
if(!isPresent){
throw new NoSuchElementException("Element wasn't found in the list");
}
第二种情况:
第二种情况非常简单:
if(!list.contains("xyz")){
throw new NoSuchElementException("Element not found");
}
最终,你必须“抛出”异常,以后可以在任何需要的地方捕获。
原始答案:
如果我的问题正确,你需要定义一个else块并“抛出”异常。
if (repl.get(i).toString().contains(theData.getName())) {
....
} else{
throw new NoSuchElementException(args...);
}