1、简介
1.1 概述
java的异常类都继承自Throwable。分为Error、Exception。
Error描述了运行时系统的内部错误,内存耗尽等。应用程序不应该抛出这类异常,也无法处理。
Exception则有分为两类,一类是RuntimeException为应用错误导致的异常。另一类是程序没有问题,但是由于其他原因导致的异常,如I/O这类异常。
一般应用需要处理的是RuntimeException异常。
1.2 异常的处理
一般的异常形式为:
try {
//doSomething
} catch (Exception e) {
e.printStackTrace();
} finally {
//
}
无论try块有没有异常,finally总是会执行。
catch可以捕获多个级别的错误。捕获的范围从小到大。如先catch EOFException,再catch IOException
异常可以嵌套
也可以在catch块中再次抛出异常。
过分细化异常会使代码膨胀
如果不想处理异常,可以使用throws抛出异常,让调用者处理 void test() throws Exception {}.
也可以主动抛出异常,形如throw new Exception()
ps:
static int get(){
int x = 1;
try {
x = 2;
x /= 0;
return x;
} catch (Exception ext) {
System.out.println("err");
x = 3;
return x;
} finally {
x = 4;
return x;
}
}
get()方法最终返回的结果为4,即finally中的结果。
2、日志记录
java提供了日志记录的类Logger
2.1 基本用法
Logger.getGlobal()获取全局的Logger对象。是一个默认的。还可以定义自己的记录器,使用Logger.getLogger(name),通过name区分。
日志记录器分为7个级别
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST
默认只记录前三个级别。可以使用logger.setLevel(Level.FINE);
可以设置想要的级别。
另外还有Level.ALL和Level.OFF进行设置。