java异常
Throwable
是异常体系的根,它有两个体系:Error
和Exception
。
Error
表示严重的错误,程序对此一般无能为力。(不需捕获)
Exception
则是运行时的错误,它可以被捕获并处理。
Exception
又分为两大类:
RuntimeException
以及它的子类;(不需捕获)- 非
RuntimeException
(包括IOException
、ReflectiveOperationException
等等)(需要捕获)
异常处理
异常处理1:try…catch捕获
public class Main {
public static void main(String[] args) {
try {
f1();
} catch (IOException e) {
e.printStackTrace();
}
}
static void f1() throws IOException {
throw new IOException("hello");
}
}
异常处理2:方法签名中声明抛出
public class Main {
public static void main(String[] args) throws IOException {
f1();
}
static void f1() throws IOException {
throw new IOException("hello");
}
}
finally语句
如果我们在try
或者catch
语句块中抛出异常,finally
语句也会执行。
绝大多数情况下,在finally
中不要抛出异常。
异常的几种构造函数
class BaseException extends Exception {
//没有message,没有cause
public BaseException() {
super();
}
//有message,没有cause
public BaseException(String message) {
super(message);
}
//有message,有cause
public BaseException(String message, Throwable cause) {
super(message, cause);
}
//包装别的异常,有message(cause的message),有cause(cause自己)
public BaseException(Throwable cause) {
super(cause);
}
//有message,有cause
//指定是否记录被抑制的异常(默认是记录的)
//指定是否启用堆栈追踪(默认是启用的)
public BaseException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}