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是普通异常的父类,则应该放到最后去。
今天就到这里了,不早了,明天还得上班,明天在继续学习。
              为了梦想,努力奋斗!
原文地址:https://www.cnblogs.com/pony1223/p/3141384.html