当前位置 博文首页 > feicongcong的博客:Java中处理异常throw和throws

    feicongcong的博客:Java中处理异常throw和throws

    作者:[db:作者] 时间:2021-07-18 22:25

    throw关键字:语句抛出异常 ??throws关键字:声明异常(方法抛出一个异常)

    ? ? 01.throw ? 是语句抛出一个异常。

    语法:throw (异常对象);
    ???????? throw e;

    ? ? 02.?throws ?是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常) ? 调用者必须做出处理(捕获或继续抛出)

    语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
    ??????????? public void doA(int a) throws Exception1,Exception3{......}

    ? ? 03.throws可以单独使用,但throw不能,?throw要么和try-catch-finally语句配套使用,要么与throws配套使用。但throws可以单独使 用,然后再由处理异常的方法捕获。

    ? ? 04.throw语句用在方法体内,表示抛出异常,由方法体内的语句处理?
    ? ? ? ? ?throws语句用在方法声明后面,表示再抛出异常,由调用这个方法的上一级方法中的语句来处理,必须做出处理(捕获或继续声明)

    ? ? 05.throws主要是声明这个方法会抛出这种类型的异常,使其他地方调用它时知道要捕获这个异常,使得提醒必须做出处理。否则编译是不会通过的。
    ? ? ? ? ?throw是具体向外抛异常的动作,所以它是抛出一个异常实例。


    public void dothing(int a,int b) throws Exception1,Exception3 {
               try{
                     //......
    
               }catch(Exception1 e){
                  throw e;
               }catch(Exception2 e){
                  System.out.println("自己打印提示,不抛出");
               }
               if(a!=b)
                  throw new  Exception3("自定义异常");
    }

    代码块中可能会产生3个异常,(Exception1,Exception2,Exception3)。
    如果产生Exception1异常,则捕获之后再抛出,由该方法的调用者去处理。
    如果产生Exception2异常,则该方法自己处理了(即打印出字符串:自己打印提示,不抛出)。所以该方法就不会再向外抛出Exception2异常了,void dothing() throws Exception1,Exception3 里面的Exception2也就不用写了(当然你写了也不会报错的),throws 就是声明可能抛出的错误,而Exception2 并未做出抛出操作。
    而Exception3异常是该方法的某段逻辑出错,程序员自己做了处理,在该段逻辑错误的情况下抛出异常Exception3,则该方法的调用者也要处理此异常。

    cs
    下一篇:没有了