异常和泛型知识点总结
异常处理
异常概念
- 异常是程序运行时发生的不正常情况,会中断正常的指令流
- Java中所有异常都继承自
Throwable
类,分为Error
和Exception
两大类
异常分类
- Error:严重错误,程序无法处理(如内存溢出)
- Exception:
- 检查异常(Checked Exception):必须处理(如IOException)
- 非检查异常(Unchecked Exception/RuntimeException):可选择性处理(如NullPointerException)
异常处理机制
try-catch-finally:
java
1
2
3
4
5
6
7
8
9try {
// 可能抛出异常的代码
} catch (ExceptionType1 e) {
// 处理特定异常
} catch (ExceptionType2 e) {
// 处理另一种异常
} finally {
// 无论是否发生异常都会执行的代码
}throws:声明方法可能抛出的异常
java
1
2
3public void method() throws IOException {
// 方法代码
}throw:主动抛出异常
java
1
throw new Exception("错误信息");
自定义异常
- 继承Exception或RuntimeException创建自定义异常类
- 通常提供构造方法传递错误信息
泛型
泛型概念
- 参数化类型,将类型作为参数
- 提高代码复用性和类型安全性
泛型使用
泛型类:
java
1
2
3
4
5public class Box<T> {
private T t;
public void set(T t) { this.t = t; }
public T get() { return t; }
}泛型方法:
java
1
2
3
4
5public <T> void printArray(T[] array) {
for (T element : array) {
System.out.println(element);
}
}泛型接口:
java
1
2
3public interface Generator<T> {
T next();
}
泛型通配符
- 无界通配符:
<?>
表示未知类型 - 上界通配符:
<? extends T>
表示T或T的子类 - 下界通配符:
<? super T>
表示T或T的父类
类型擦除
- Java泛型在编译时进行类型检查,运行时擦除类型信息
- 编译器在必要时插入类型转换代码
泛型限制
- 不能使用基本类型作为类型参数
- 不能创建泛型数组
- 不能实例化类型参数
- 不能使用instanceof检查泛型类型