Java异常体系

作者: 沈先生的影子 | 来源:发表于2020-10-19 16:21 被阅读0次

    Java的异常体系(部分)如下图:

    异常:

            程序运行过程中可能出现的非正常状态包括(受检异常/非受检异常)。异常是必须要进行处理的,是程序健壮性和安全性的保证。运行时异常表示虚拟机操作中可能遇到的异常,是一种常见的运行错误,只要程序设计没有问题通常不会发生。

    Java.Lang.Throwable异常的两大子类:

        Error:Java虚拟机或者底层硬件相关的异常,不需要捕获,捕获了也无法处理。例如:OutOfMemoryError。

        Exception:程序本身抛出的异常,是程序严谨的一种体现,可以进行捕获并处理,如果不主动捕获,则由JVM处理。例如:RuntimeException(运行时异常/非检查异常)和 CheckedException(受检异常)。


    受检异常和非受检异常:

            受检异常和非受检异常都是Exception异常的子类,可以进行捕获并处理的异常。

            RuntimeException的所有子类都是非受检异常,在Exception子类下非RuntimeException的子类的异常都是受检异常。

            受检异常:必须要进行捕获,通过 try/catch或者throws。 

            非受检异常:可捕获也可以不捕获。

    受检异常的优缺点?

            异常是主逻辑的补充逻辑,修改补充逻辑会导致主逻辑的修改,有可能导致违反了代码规范。

            实现类的变更会影响调用者的封装性。

            频繁进行try/catch影响代码的结构,降低代码可读性。

            受检异常增加了代码的健壮性,但是会破坏代码主流程,为了对异常进行捕获、抛出需要增加代码,降低了代码的可读性。

    什么时候使用受检异常?

            如果异常影响到系统运行的安全性和正确性,必须作为受检异常进行处理,否则这些受检异常都可以换成非受检异常。

    相关文章

      网友评论

        本文标题:Java异常体系

        本文链接:https://www.haomeiwen.com/subject/jhjkmktx.html