1.什么是异常 ?
Java程序运行中,常常会遇到非正常的现象,这种情况称为运行错误。根据性质可以分为错误和异常。Java程序中(无论谁写的代码),所有抛出(throw)的异常都必须从Throwable派生而来。在java.lang软件包中有一个java.lang.Throwable类,这个类是java中所有错误和异常的超类。
类Throwable有两个直接子类:Error 和 Exception。
2. Error 错误
Error是错误,是不可挽回的,也就是说,出了Error程序就挂了,最常见的就是OutOfMemoryError、死循环等等。这种情况下,程序运行时本身无法解决,只能通过其他程序干预。Java对应的类为Error类,Error类对象由Java虚拟机生成并抛弃。
3. Exception (异常)
Exception(异常)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。
Exception又分为运行时异常,编译时异常。
运行时异常:表示无法让程序恢复的异常,导致的原因通常是因为执行了错误的操作,建议终止程序,因此,编译器不检查这些异常。
编译时异常:表示程序可以处理的异常,也即表示程序可以修复(由程序自己接受异常并且做出处理), 所以称之为受检查异常。
通常一下这些情况会导致异常:
(1)代码或者调用的代码(如共享库)中有错误;
(2)操作系统资源不可用;
(3)公共语言运行库遇到意外情况(如无法验证代码)等;
常见的是异常有:
(1)数组下标越界;
(2)算法溢出(超出数值表示的范围);
(3)除数为零;
(4)无效参数;
(5)内存溢出;
这些情况不像错误类那样,程序运行时本身可以解决,由异常代码调整程序运行方向,使程序仍可继续运行,直到正常结束。