Java异常
Java异常
第一种分类
第二种分类
第二种种方法划分,可以分为可查异常(Checked Exception)和不可查异常(Unchecked Exception)
Unchecked Exception : (编译器不会辅助检查的,需要程序员自己管的)异常,包括Error子类和RuntimeException子类。
- 非RuntimeException的Exception的子类: (编译器会辅助检查的)异常, checked exception。
- 注意: 编译器会检查程序是否为checked exception 配 置了处理。如果没有处理,会报错。
Checked Exception(非RuntimeException的Exception的子类),程序员必须处理,以发生后处理为主。编译器会 辅助检查。
- Unchecked Exception中的RuntimeException子类,程序 必须处理,以预防为主。编译器不关心此类异常,也 不会辅助检查。
- Error的子类,可以不用处理
如何处理函数抛出的异常?
1.直接吞掉
public void func1() throws Exception1 {
// ...
}
public void func2() {
//...
try {
func1();
} catch(Exception1 e) {
log.warn("...", e); //吐掉:try-catch打印日志
}
//...
}
2.原封不动 throws
public void func1() throws Exception1 {
// ...
}
public void func2() throws Exception1 {//原封不动的re-throw Exception1
//...
func1();
//...
}
- throw throws
public void func1() throws Exception1 {
// ...
}
public void func2() throws Exception2 {
//...
try {
func1();
} catch(Exception1 e) {
throw new Exception2("...", e); // wrap成新的Exception2然后re-throw
}
//...
}