JAVA 异常体系
Posted dev1ce
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.html;https://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{}
以上是关于JAVA 异常体系的主要内容,如果未能解决你的问题,请参考以下文章