美文网首页
java异常

java异常

作者: Scalelength | 来源:发表于2018-07-22 09:31 被阅读0次

一、异常分类
        Throwable:异常的根类
        子类:
                Error:无法处理的错误,表示运行中较严重的问题
                例如:虚拟机错误,内存错误,线程死锁
                Exception:程序本身可以处理的异常(异常处理通常是针对这种类型异常及其子类的处理)包括非检查异常,检查异常
                非异常检查(Unchecked Exception):包含RuntimeException及其子类编译器不要求强制处理的异常
                检查异常(Checked Exception):程序编程阶段必须解决,否则无法通过编译。比如:IO异常(IO Exception),SQL异常(SQL Exception)

异常分类

二、异常处理分类
        抛出异常→捕获异常→异常处理
            try—catch-finally
            try和catch必须组合使用。
            finally无论前面怎样执行,后面都必须执行finally块中的过程
            如果finally中有return语句,则始终会执行finally中的return语句

异常处理

三、throw与throws
        throws
                throws语句用在方法定义时声明该方法要抛出的的异常类型
                当方法抛出异常列表中的异常时,方法将不对这些类型及其子类类型的异常作处理,而抛向调用该方法的方法,由他去处理。(声明之后就可以不用写try-catch而将问题向上抛,在调用该方法的地方要使用try-catch语句接收并处理)
                public void method() throws Exception1,Exception2...,{//可能产生异常的代码}
                注:当子类重写父类抛出异常的方法时,声明的异常必须是父类方法所声明异常的同类或子类
        throw
            throw语句是自己new出一个异常,从而通过try-catch接收并处理
                1.通过try-catch包含throw语句--自己抛出自己处理
                try{ throw new Exception("问题描述");}catch(Exception e){e.printStackTrace();}
                2.通过throws在方法声明出抛出异常类型--谁用谁处理--调用者自己处理,也可以继续上抛
                try{调用含有throw的方法;}catch(Exception e){e.printStakTrace();}
                3.用的接收异常类型可以为其父类,而不可为子类,Throwable是Exception的父类
                4.throw与throws组合使用必须有一个try-catch接收并处理(在两个方法中)

四、自定义异常类
        通过自定义异常描述特定业务产生的异常类型
        自定义异常就是定义一个类,去继承Throwable类或者它的子类
        通过throw new 新异常名("");创建,上抛后通过try-catch(新异常名 e);接收

五、异常链

当捕获一个异常后再抛出另一个异常时,如果希望将异常发生的原因一个一个串起来(把底层的异常信息传给上层,这样逐层抛出)就形成了异常链。
        Throwable(String message)
                  构造带指定详细消息的新 throwable。
        Throwable(String message, Throwable cause)
                  构造一个带指定详细消息和 cause 的新 throwable。
        或
        Exception 变量名=new Exception("新产生的异常")
        变量名.initCause(当前异常名)
        将此 throwable的cause初始化为指定值。(该Cause是导致抛出此throwable的throwable。)
        throw 变量名//

相关文章

网友评论

      本文标题:java异常

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