20130617—认识异常
1.异常是什么?
异常简单而言就是一种指令流,什么指令流让程序中断的指令流。合起来:异常是一种让程序中断的指令流。在正常情况下,如果没有处理,那么程序在出现异常的情况下,程序将中断执行,退出程序。
2.既然有异常那么该如何处理。
通常而言,对异常的处理均采用的方法为try---catch---finally 的搭配完成。try 用于捕获异常,catch用于匹配异常,finally程序的最终出口。当程序某个地方可能出现异常时,通过采用try去捕获异常,如果有异常则try异 常下的语句不在执行,到catch处去匹配异常进行处理,如果有finally则最终出口执行以下,但整个程序不会出现中断,会完整的执行完毕,并将异常 打印出来,或者记录日志。
3.异常的处理流程
异常出现后具体的处理流程是怎样进行的呢?首先让我们认识一下大体的异常:
java.lang.Object
java.lang.Throwable
java.lang.Exception
java.lang.RuntimeException
java.lang.ArithmeticException
从上面可以看出,异常的最大父类为Throwable,那么我们在看下Throwable:
java.lang.Object
java.lang.Throwable
- 所有已实现的接口:
- Serializable
- 直接已知子类:
- Error, Exception
- 可以看出其下又两个子类分别为:Error,Exception
- Error:JVM产生的错误,即:程序还没有运行时候产生的错误,用户无法去处理。
- Exception:表示程序运行时候产生的异常,用户是可以进行处理的。
- 一般而言,所指的异常通常都是Exception的子类,因此可以对异常进行向上转型,来建立自己的异常类型,异常处理流程如下图所示:
- 程序在发生异常的时候会产生一个异常类的实例化对象,由JVM产生的,然后将这个实例化对象与catch中的实力对象进行匹配,catch就可以当做一个方法,然后传递了一个引用对象为异常类实例化对象然后看是否instanceof匹配与否。
- 4。注意:
- (1)异常的捕获通常要细分匹配异常,不能统一用Exception来捕获,必须细分异常,指定什么样的异常,是ArithmeticException 还是其它的,必须细分。。。
- (2)异常在细分后,在catch进行异常匹配的时候,注意了,必须是范围由小到大的,比如说Exception是普通异常的父类,则应该放到最后去。
- 今天就到这里了,不早了,明天还得上班,明天在继续学习。
- 为了梦想,努力奋斗!