例如,我有:
private List<Entry> entries = new LinkedList<Entry>();
@Override
public void addEntry(Entry entry) {
entries.add(entry);
Collections.sort(entries);
}
@Override
public void deleteEntry(String input) throws IllegalArgumentException {
for (int i = 0; i < entries.size(); i++) {
if (entries.get(i).getName().equalsIgnoreCase(input) || entries.get(i).getExtension().equalsIgnoreCase(input)) {
entries.remove(i);
}
}
}
我已经对这段代码进行了测试,它工作得很好。一旦我在删除方法中添加 else block 以引发异常,该方法在调用时总是会引发异常。
@Override
public void deleteEntry(String input) throws IllegalArgumentException {
for (int i = 0; i < entries.size(); i++) {
if (entries.get(i).getName().equalsIgnoreCase(input) || entries.get(i).getExtension().equalsIgnoreCase(input)) {
entries.remove(i);
} else {
throw new IllegalArgumentException();
}
}
}
即使输入不正确,上面的代码也会抛出异常。你对此有什么想法吗?谢谢
最佳答案
如果存在不匹配的条目,您将引发异常。
您应该在开始循环之前检查输入,并且仅在输入无效时抛出 IAE。您不需要循环来进行此检查。
关于java - 抛出异常时程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426514/