1、简介

1.1 概述

java的异常类都继承自Throwable。分为Error、Exception。
Error描述了运行时系统的内部错误,内存耗尽等。应用程序不应该抛出这类异常,也无法处理。
Exception则有分为两类,一类是RuntimeException为应用错误导致的异常。另一类是程序没有问题,但是由于其他原因导致的异常,如I/O这类异常。
一般应用需要处理的是RuntimeException异常。

java 常用异常处理 java中的异常处理_java

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进行设置。