1,什么是异常
Java程序在运行时出现的任何错误,均可以归结为异常。全部异常的父类是Throwable。Throwable在JDK中有两个子类Error和Exception。Throwable有printStackTrace()等接口用于获取堆栈跟踪数据等信息数据库
2,Error是什么
Error用来表示JVM在运行时出错的比较严重的错误,开发人员对此类错误的发生时间是不可预知的,有些Error会致使JVM宕机,好比堆内存溢出;有些Error不会致使JVM宕机,好比栈内存溢出。 常见的Error有:StackOverFlowError和OutOfMemoryError。 StackOverflowError:当线程栈的深度超过虚拟机分配给线程的栈大小时就会出现此类错误。好比方法无限递归。 OutOfMemoryError:当虚拟机即便执行垃圾回收后也没有更多的可用的内存用来分配一个对象时会发生此类错误,好比大对象实在没法分配内存。数组
3,Exception是什么
Exception表示程序自己能够处理的异常。Exception分为运行期异常RuntimeException和非运行期异常。线程
4,什么是非运行期异常
非运行期异常是指在编译器就能够抛出可能发生的异常给程序调用者,由程序调用者来决定万一发生异常的时候的处理。比较典型的有指针
5,什么是运行期异常
RuntimeException是Exception的子类,表示因为程序逻辑错误引发的异常,应该是须要改变程序逻辑而避免发生的。代码中容许不捕获。比较典型的有orm
6,如何抛出与捕获异常
使用throw抛出异常。若是方法中出现了throw非运行期异常,则该方法上会有throws 该异常,交由该方法的调用者来处理该异常
使用try-catch或 try-catch-finally 来捕获异常。对象
7,异常链
异常每次向上抛出以及向上类型转换的时候,都会保存原始异常以及异常方法的调用,依次造成一条链,称为异常链。异常链的最顶端必然是主线程中的main()或者开发人员自定义的Thread线程的run()。递归
注意:
1.try、catch、finally的组成为:索引
2.JDK1.7提供的try-with-resource语句的语法以下:
try(可能异常){执行} 同时在方法中抛出该类异常;接口
3.重写方法时,若是父类方法没有抛出异常,子类也不能抛出该类异常,只能本身catch处理内存
下一篇文章详细阐述一些我所理解的try-catch-finally在使用时的具体状况。