美文网首页
throw和throws那些事儿

throw和throws那些事儿

作者: 代码阿强 | 来源:发表于2020-06-22 11:41 被阅读0次

throws和throw的基本用法

主动向外抛出一个异常,目的就是告诉调用者我丢了一个异常,需要你处理一下。见代码:

class NoValueException extends Exception
{
    NoValueException(String msg)
    {
        super(msg);
        System.out.println("出现了负数");
    }
}
public class Compute {
    
    //定义一个只做正数加法运算的函数
    static void add(int a,int b) throws NoValueException
    {
        if(a<0||b<0)
        {
            throw new  NoValueException("出现负数");
        }
        System.out.println("答案:"+(a+b));
    }
}

public class TestDemo {

    public static void main(String[] args) {
        try {
            Compute.add(5, -1);
        }catch(NoValueException e)
        {
            e.printStackTrace();
            System.out.println("计算不正确");
        }
    }
}

throw定义在方法中,throws抛给调用者,需要和方法名同行

抛异常的注意事项

抛异常可以同时抛多个异常,就是声明给调用者,这段代码可能会有多个异常产生,需要你每个异常都需要考虑到并且处理一下,但是处理异常的时候我们需要注意处理异常的顺序,见代码:

class AException extends Exception{//Exception是一级异常,A是第二级
    
}
class BException extends AException{//B是第三级异常
    
}
class CException extends BException{//C是第四级异常
    
}
public class Compute {
    static  int state=1;
    static void func()throws AException,BException,CException,Exception {
        if(state==1)
            throw new AException();
        if(state==2)
            throw new BException();
        if(state==3)
            throw new CException();
        
    }

}

public class TestDemo {

    public static void main(String[] args) {
        try {
            Compute.func();
        }catch(CException e)//处理最低一级异常
        {
            e.printStackTrace();
        }
        catch(BException e)
        {
            e.printStackTrace();
        }
        catch(AException e)
        {
            e.printStackTrace();
        }
        catch(Exception e)//处理最高一级异常
        {
            e.printStackTrace();
        }
    }
}

很好理解这样的做法,子类异常肯定包括在父类异常之中,既然你直接处理了父类异常了,那么子类的异常就算处理了,但是父类是一个大概的,子类会更加具体。所以我们往往需要从具体到抽象的顺序进行处理嘛

总结

thorw写在方法里面,throws写在方法同行,对于throws抛出的异常,调用者需要注意一下处理异常的顺序

相关文章

  • Java基础系列-throw、throws关键字

    原创文章,转载请标注出处:《Java基础系列-throw、throws关键字》 一、概述 throw和throws...

  • throws 和 throw

    我们一般用到throw都是因为我们自己写了一种exception然后自己把它扔出去 但是我觉得就是其他的excep...

  • throws 和 throw

    throws 使用在函数上(class)throw 用在函数内 throws 后面跟着异常类,可以有多个,但需要逗...

  • Java 异常部分(重要)

    1.throw 和 throws 的区别? 答: throw则是指抛出的一个具体异常类型 throws是用来声...

  • 每日流程图

    面试题 1.throw 和 throws 的区别? throw:是用在语句抛出异常throw特点:1) throw...

  • 异常的调用终止

    0. throw 和 throws 的区别? throw:是真实抛出一个异常。 throws:是声明可能会抛出一个...

  • swift throws 和 throw

    throws---------->把异常交给调用处。 可以结合throw来同时使用。 throws用在方法声明处,...

  • 9,异常

    throw throws try_catch 自定义异常 throw是语句抛出一个异常。 throws是方法可...

  • java基础

    throw、throws 位置不用:throws 用在函数上,后面跟的是异常类,可以跟多个;而 throw 用在函...

  • Java面试题(异常)

    74. throw 和 throws 的区别? throws是用来声明一个方法可能抛出的所有异常信息,throws...

网友评论

      本文标题:throw和throws那些事儿

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