异常指的是运行期出现的错误,也就是当程序开始执行以后执行期出现的错误。出现错误时观察错误的名字和行号最为重要。
比如你读取的文件不存在,数组越界,进行除法时,除数为0等都会导致异常。
我找一个比较形象的异常处理理解方式:
从前从前,有位老人,他的名字叫Throwable,他生了两个儿子,大儿子叫Error,二儿子叫Exception。Error表示编译时或者系统错误,如虚拟机相关的错误,OutOfMemoryError等,error是无法处理的。Exception代码异常,Java程序员关心的基类型通常Exception。它能被程序本身可以处理,这也是它跟Error的区别。它可以分为RuntimeException(运行时异常)和CheckedException(可检查的异常)。
在eclipse中编写java程序的时候,就遇到过不少异常处理
-
NullPointerException 空指针异常
-
- ArithmeticException 出现异常的运算条件时,抛出此异常
-
- IndexOutOfBoundsException 数组索引越界异常
-
- ClassNotFoundException 找不到类异常
-
- IllegalArgumentException(非法参数异常)
但是当时不理解其中的意思,也没有过多的注意。
当异常出现后,会在堆上创建异常对象。当前的执行路径被终止,并且从当前环境中弹出对异常对象的引用。这时候异常处理程序,使程序从错误状态恢复,使程序继续运行下去。异常处理主要有抛出异常、捕获异常、声明异常。如图:
这张图是我在网络上搜到的,能够比较简单明了的表明结构。