java - 抛出异常时程序无法运行

标签 java exception linked-list

例如,我有:

    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/

相关文章:

java - 如何从线程启动服务

C、打印链表中的多个整数

C 链表按排序方式插入元素

c++ - tail->下一个打印地址代替数据循环链表c++

java - Gradle 构建在不同的 ProductFlavors 上失败

java - 如何四舍五入到指定数字的最接近倍数?

java - SSL 不适用于 IBM MQ 8 客户端 jar

C++ 有单独的可执行日志异常吗?

java.lang.NumberFormatException : For input string: "22"

java - 如何在不使用控制流异常的情况下根据模式验证 XML?