• JAVA 异常体系


    JAVA异常体系超类:Throwable

    两个子类:Error(错误),Exception(异常)

    异常体系采用的是"继承"。

    Error:在程序中无法处理的错误,表示运行应用程序中出现严重错误。

    主要是VirtualMachineError(虚拟机错误):

    OutOfMemoryError:内存溢出。其中内存溢出又分为

    java.lang.OutOfMemoryError: Java heap space
    java.lang.OutOfMemoryError: unable to create new native thread
    java.lang.OutOfMemoryError: PermGen space(JDK1.7与1.8->Java heap space)
    java.lang.OutOfMemoryError: Requested array size exceeds VM limit

    需要结合JVM运行时数据区结构知识来理解产生这些异常的原因:以下有两篇不错的博文转载以供深入了解OutOfMemoryError

    转自:http://www.cnblogs.com/paddix/p/5309550.htmlhttps://www.cnblogs.com/duanxz/p/4901437.html

    StackOverflowError: 当线程请求栈的深度大于虚拟机所允许的深度,将抛出StackOverflowError异常。

    以下这篇文章比较好的分析了从 JVM结构分析产生 Error的原因

    转自:https://blog.csdn.net/u011936381/article/details/20039103

    AWTError:AWT是使用操作系统中的图形函数的抽象窗口工具,AWT组件出错。

    Exception:

    异常分为运行时异常(RuntimeException及其子类)和编译异常(如IOException)

    运行时异常:RuntimeException类及其子类表示JVM在运行期间可能出现的异常,如空指针异常(NullPointerException)、数组下标越界(ArrayIndexOutBoundException).此类异常可以选择捕获处理,也可以不处理。

    编译异常:Exception中除RuntimeException及其子类之外的异常。如果程序中出现此类异常,比如说IOException,必须对该异常进行处理,否则编译不通过。在程序中,通常不会自定义该类异常,而是直接使用系统提供的异常类。

    在java应用中,异常的处理机制分为抛出异常和捕获异常。

    抛出异常:当一个方法出现错误而引发异常时,该方法会将该异常类型以及异常出现时的程序状态信息封装为异常对象,并交给本应用。运行时,该应用将寻找处理异常的代码并执行。任何代码都可以通过throw关键词抛出异常,比如java源代码抛出异常、自己编写的代码抛出异常等。

    捕获异常:一旦方法抛出异常,系统自动根据该异常对象寻找合适异常处理器(Exception Handler)来处理该异常。所谓合适类型的异常处理器指的是异常对象类型和异常处理器类型一致。

    抛出异常:throws  、 throw

    捕获异常:try{}catch(){} 、 try{}catch(){}finally{}

  • 相关阅读:
    Sql优化(二) 快速计算Distinct Count
    Minor GC和Full GC区别(转)
    对于JVM中方法区,永久代,元空间以及字符串常量池的迁移和string.intern方法
    2017/6/29杂记
    java中代理,静态代理,动态代理以及spring aop代理方式,实现原理统一汇总
    ThreadLocal的设计理念与作用
    2017/6/28杂记
    关于hashmap 与concurrentHashMap
    2017/6/27杂记
    深入理解java异常处理机制
  • 原文地址:https://www.cnblogs.com/dev1ce/p/10682425.html
Copyright © 2020-2023  润新知