### 1. 空指针异常(NullPointerException)

错误场景:当尝试调用一个空对象的属性或方法时触发。

```java

String str = null;

System.out.println(str.length()); // 抛出NullPointerException

```

解决方案:

- 使用前检查对象是否为空:

```java

if (str != null) {

System.out.println(str.length());

}

```

- 使用`Optional`类避免空值操作:

```java

Optional optionalStr = Optional.ofNullable(str);

optionalStr.ifPresent(s -> System.out.println(s.length()));

```

---

### 2. 类型转换异常(ClassCastException)

错误场景:强制将对象转换为不兼容的类型时发生。

```java

Object obj = Hello;

Integer num = (Integer) obj; // 抛出ClassCastException

```

解决方案:

- 使用`instanceof`进行类型检查:

```java

if (obj instanceof Integer) {

Integer num = (Integer) obj;

}

```

- 通过泛型规范类型:

```java

List list = new ArrayList<>();

// 泛型确保类型安全

```

---

### 3. 数组越界异常(ArrayIndexOutOfBoundsException)

错误场景:访问数组时索引超出有效范围。

```java

int[] arr = {1, 2, 3};

System.out.println(arr[5]); // 抛出ArrayIndexOutOfBoundsException

```

解决方案:

- 检查索引是否在有效范围内:

```java

int index = 5;

if (index >= 0 && index < arr.length) {

System.out.println(arr[index]);

}

```

- 使用增强型for循环避免索引操作:

```java

for (int num : arr) {

System.out.println(num);

}

```

---

### 4. 数字格式化异常(NumberFormatException)

错误场景:将非数字字符串转换为数值类型时触发。

```java

String str = abc;

int num = Integer.parseInt(str); // 抛出NumberFormatException

```

解决方案:

- 捕获异常并处理:

```java

try {

int num = Integer.parseInt(str);

} catch (NumberFormatException e) {

System.out.println(字符串格式错误!);

}

```

- 使用正则表达式验证:

```java

if (str.matches(-?\d+)) {

int num = Integer.parseInt(str);

}

```

---

### 5. 集合操作异常(ConcurrentModificationException)

错误场景:在遍历集合时修改其结构(如删除元素)。

```java

List list = new ArrayList<>();

list.add(A);

for (String s : list) {

list.remove(s); // 抛出ConcurrentModificationException

}

```

解决方案:

- 使用迭代器的`remove()`方法:

```java

Iterator iterator = list.iterator();

while (iterator.hasNext()) {

String s = iterator.next();

iterator.remove(); // 安全删除

}

```

- 使用`CopyOnWriteArrayList`等线程安全集合:

```java

List safeList = new CopyOnWriteArrayList<>(list);

for (String s : safeList) {

safeList.remove(s);

}

```

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐