空指针异常及并发修改异常(ConcurrentModificationException)及解决办法

16 阅读1分钟

1. 空指针异常(NullPointerException)

java

复制下载

// 错误示例
String str = null;
System.out.println(str.length());

// 解决:添加空值检查
if (str != null) {
    System.out.println(str.length());
}
// 或使用Optional(Java 8+)
Optional.ofNullable(str).ifPresent(s -> System.out.println(s.length()));

2. 并发修改异常(ConcurrentModificationException)

java

复制下载

// 错误示例
List<String> list = new ArrayList<>(Arrays.asList("A", "B"));
for (String s : list) {
    if ("B".equals(s)) {
        list.remove(s); // 遍历时修改触发异常
    }
}

// 解决:使用迭代器删除
Iterator<String> it = list.iterator();
while (it.hasNext()) {
    if ("B".equals(it.next())) {
        it.remove(); // 安全删除
    }
}

核心要点:

  • 空指针:始终验证对象非空,善用Optional
  • 集合修改:避免在遍历中直接修改原集合,改用迭代器或Stream API