Throwable
1,程序的非正常情况。

               2,继承体系:

                         Throwable

                               |---Error

                                       |---严重的,不可拒的问题。

                               |---Exception

                                       |---非RuntimeException必须进行处理,否则编译不通过。

                                                      |---throws

                                                      |--- try()..catch(){}

                                       |---RuntimeExcetion

                                                      |---运行期问题,需要修改参数与代码逻辑。

               3,默认处理方式:

                           默认情况下,JVM会把异常的全路径、位置及原因等信息显示出来。

                           且程序中止,不会执行到下一步。

               4,格式:

                         1,try..catch..finally

异常 ——Java _程序
//基本格式try{
    //可能出现的问题
}catch(异常的对象){
    //对问题的处理
}finally{
    //释放资源
}
异常 ——Java _程序


2,变形格式:

                             try...catch..

                             try...catch..catch

                             try...catch..catch..finally

                             try...finally

                             JDK7新特性:处理多个异常

                                       catch(ExceptionA|ExcepationB|ExcetionC...e){

                                       }    

               5,注意事项:

                            1,final,finally,finalize的特点及区别?

                                       final :是修饰符,它修饰的变量是常,它修饰的类不能被继承,它修饰的方法不能被重写。

                                       finally :是异常处理的一部分,特点是永远会被执行,特殊情况:例如在执行到finally之前退出JVM。

                                       finallize :是Object的方法,用于垃圾回收。

                            2,执行顺序:

                                      在执行try里面的代码会从上至下,如果遇到问题,就会产生一个异常对象到catch里进行匹配;

                                      有对应的匹配就走对应处理方案。

                                      没有,就向上找父类匹配,如果有就找对应处理方案。

                                      没有,JVM就会采取默认的处理方案。

                                  注意:

                                       如果有多个异常,有子父关系,父异常一定要放最后面。

                                       如果是多个异常,没有子父关系,它们所在的位置没有顺序关系。

                            3,Exception和RuntimeException的区别?  

                                           Exception:分为编译期异常和运行期异常,编译期异常是必须处理,否则编译不能通过。

                                           RuntimeException: 运行期异常。不需要写异常代码,但有可能需要修正程序参数与代码逻辑。

                            4,throws和throw的区别?

                                          throws:在方法声明上,后面跟的是异常类名。

                                                      throws后面跟的是编译期异常,调用者是必须要进行处理的。

                                                      throws后面跟的是运行期异常,调用者不需要处理,这种方式没有意义。

                                          throw:  在方法体中,后面跟的是异常对象名。

                                                      throw后面如果抛出的是运行时期异常对象,那么方法上是不需要进行声明的。

                                                      throw后面如果抛出的是编译时期异常对象,那么一般要在方法声明上用throws声明该方法有异常。

                            5,子类重写父类方法时不能抛出比父类更大的异常。

                            6,如果catch里面有return,finally还会执行吗?

                                      会执行。

                                 如果执行,是在return之前执行还是在之后执行?

                                     之前。准确的说应该在之间。

               注意:

                     能自己处理的异常,尽量自己处理。

                     在main方法里尽量不要抛异常。