美文网首页
5、异常处理

5、异常处理

作者: 24_yu | 来源:发表于2017-11-03 13:35 被阅读0次
    image.png

    java Exception:
    1、Error
    2、Runtime Exception 运行时异常
    3、Exception
    4、throw 用户自定义抛出的异常
    异常分为两大类型:
    ● Error类:代表了编译和系统的错误,不允许捕获,比如虚拟机错误,内存空间不足,方法调用栈溢出等,如java.lang.StackOverFlowError和Java.lang.OutOfMemoryError等,对于这类错误,java编译器不去检查,仅靠程序本身也无法恢复和预防,建议终止程序

    ● Exception类:表示程序可以处理的异常,可以捕获且有可能恢复,对于这类异常,应尽可能处理异常,是程序恢复运行。此类又可分为运行时异常Runtime_Exception和非运行时异常Non_RuntimeException两个直接子类。

    + 运行时异常:对应于编译错误,是指java程序在运行时产生的由解释器引发的各种异常。比较常见的此类异常:除数为0时的算术异常ArithmeticException、错误的类型转换、数组下标越界ArrayIndexOutOfBoundsException、空指针异常NullPointerException
    +非运行时异常:又称可检测异常,此类异常可使用throws和try-catch-finally来处理。比较常见:SQLException、IOException等

    二、异常处理流程

    1、 如果程序之中产生了异常,那么会自动的由JVM根据异常的类型,实例化一个指定异常类的对象;
    2、 如果这个时候程序之中没有任何的异常处理操作,则这个异常类的实例化对象将交给JVM进行处理,而JVM的默认处理方式就是进行异常信息的输出,而后中断程序执行;
    3、 如果程序之中存在了异常处理,则会由try语句捕获产生的异常类对象;
    4、 与try之后的每一个catch进行匹配,如果匹配成功,则使用指定的catch进行处理,如果没有匹配成功,则向后面的catch继续匹配,如果没有任何的catch匹配成功,则这个时候将交给JVM执行默认处理;
    5、 不管是否有异常都会执行finally程序,如果此时没有异常,执行完finally,则会继续执行程序之中的其他代码,如果此时有异常没有能够处理(没有一个catch可以满足),那么也会执行finally,但是执行完finally之后,将默认交给JVM进行异常的信息输出,并且程序中断;

    三、一些需要注意的地方

    ●在catch块中,由上至下的异常范围越来越大
    try语句在返回前,将其他所有的操作执行完,保留好要返回的值,而后转入执行finally中的语句,而后分为以下三种情况:
    情况一:如果finally中有return语句,则会将try中的return语句<font color=blue>”覆盖“</font>掉,直接执行finally中的return语句,得到返回值,这样便无法得到try之前保留好的返回值。
    情况二:如果finally中没有return语句,也没有改变要返回值,则执行完finally中的语句后,会接着执行try中的return语句,返回之前保留的值。
    情况三:如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况,:
    1)如果return的数据是基本数据类型或文本字符串,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值。
    2)如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。

    四、throw关键字

    public class TestDemo { 
        public static void main(String args[]){ 
            try { 
                throw new Exception("抛着玩的,你管不着。") ; 
            } catch (Exception e) { 
                e.printStackTrace() ; 
            } 
        } 
    } 
    

    相关文章

      网友评论

          本文标题:5、异常处理

          本文链接:https://www.haomeiwen.com/subject/yoktmxtx.html