异常是在程序中导致程序中断运行的一种指令流。为了保证程序出现异常之后仍然可以正确的执行完毕,所以要采用异常的处理机制。Java异常机制用到的几个关键字:try、catch、finally、throw、throws

    try — 用于监听。将要被监听的代码(可能抛出异常的代码)放在try语句块之内,当try语句块内发生异常时,异常就被抛出。
    catch — 用于捕获异常。catch用来捕获try语句块中发生的异常。
    finally — finally语句块总是会被执行。它主要用于回收在try块里打开的物力资源(如数据库连接、网络连接和磁盘文件)。只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。
    throw — 用于抛出异常。
    throws — 用在方法签名中,用于声明该方法可能抛出的异常。主方法上也可以使用throws抛出。如果在主方法上使用了throws抛出,就表示在主方法里面可以不用强制性进行异常处理,如果出现了异常,就交给JVM进行默认处理,则此时会导致程序中断执行。

    二、异常分类
    1.受检异常:在编译阶段就能发现的异常
    2.非受检异常:在程序运行过程中可能会出现的异常
    三、异常处理
    1.try+catch处理
    使用try语句块括住可能会发生异常的语句,在catch块中:小括号进行异常的类型的匹配,匹配成功后在大括号中进行对异常的处理。finally里块中为异常的统一出口,常用作资源的关闭(只有程序在内存层面上被终止了,如:死机,调用方法结束虚拟机等。finally块中的内容才不会被执行;其他情况下,finally块中的内容必然被执行)。
    2.throws抛出异常
    将异常抛给调用该程序的语句进行处理,如果一直不进行处理,向上抛出,最终会在main方法中抛给虚拟机进行处理(不推荐抛给虚拟机,尽量不在main方法中进行抛出)

    常见的异常

    输入输出异常:IOException算术异常类:ArithmeticExecption空指针异常类:NullPointerException类型强制转换异常:ClassCastException操作数据库异常:SQLException文件未找到异常:FileNotFoundException数组负下标异常:NegativeArrayException数组下标越界异常:ArrayIndexOutOfBoundsException违背安全原则异常:SecturityException文件已结束异常:EOFException字符串转换为数字异常:NumberFormatException方法未找到异常:NoSuchMethodException
    通过try、catch捕获异常
    通过throws抛出异常
    定义一个方法的时候可以使用throws关键字声明。使用throws关键字声明的方法表示此方法不处理异常,而交给方法调用处进行处理。

    throw关键字抛出异常

    throw关键字作用是抛出一个异常,抛出的时候是抛出的是一个异常类的实例化对象,在异常处理中,try语句要捕获的是一个异常对象,那么此异常对象也可以自己抛出。