首页 > 技术文章 > JavaSE基础---异常

appskyy 2018-04-14 18:37 原文

异常

Throwable----具备可拋性:就是该体系中的类和对象都可以被关键字throw或throws所操作。

  |---Error  ---错误,一般不编写针对性处理方式

  |---Exception---异常,可以有针对性的处理方式

    |---RuntimeException(运行时异常、不被检测时异常)

      |---在函数内被抛出,函数不需要声明(异常发生时,已经无法让程序继续运行,所以不需要调用者处理,直接让程序停止)

    |---CheckedException(被检测时异常)

      |---在函数内被抛出,函数必须要声明,否则编译失败(调用者需要知道是什么异常,来进行针对性处理)

 

异常处理方式

  |---抛出          ---功能内部出现异常,但是内部不能处理,就抛出

    |---throw:用于函数内,后面跟异常对象,抛出异常对象

    |---thorws:用于函数上,后面跟异常类名,抛出异常类

  |---捕捉(try...catch...fianlly)---功能内部出现异常,并且内部可以处理,就用try

    |---功能抛出几个异常,就调用几个对应的catch处理代码块

    |---try对应多个catch时,父类catch必须放在下面(因为如果放在上面,父类捕捉到异常后,下面的catch就不运行了)

    |---除非JVM退出,finally代码块一定会执行,可以用于用户关闭资源。

 

当异常出现后,子父类进行覆盖时,有了一些新的特点:

  1、当子类覆盖父类方法时,如果父类抛出了异常,那么子类方法要么抛出父类异常或者该异常的子类,要么不抛出异常。

  2、如果父类抛出多个异常,那么子类覆盖时只能抛出父类异常的子集。

    注意,父类没有抛出异常的情况下,子类是不能抛出异常的,如果此时子类覆盖的方法中出现异常,只能用try不能用throws,但是如果子类不能处理,并且影响到了子类方法的运行,这时可以用throw在函数内抛出RuntimeException异常或其子类(RuntimeException异常不需要在函数上throws声明)。

 

推荐阅读