throw与throws的区别

throw 和 throws 都与异常处理有关,但它们的用法和含义不同。

两者的区别

throw 在方法体内使用,throws 在方法声明上使用。
throw 后面接的是异常对象,只能接一个。throws 后面接的是异常类型,可以接多个,多个异常类型用逗号隔开。
throw 是在方法中出现不正确情况时,手动来抛出异常,结束方法的,执行了 throw 语句一定会出现异常。而 throws 是用来声明当前方法有可能会出现某种异常的,如果出现了相应的异常,将由调用者来处理,声明了异常不一定会出现异常。

throw 是一个关键字,用于抛出一个异常对象,示例如下:

java 复制代码
throw new Exception("抛出一个异常");

throws 是一个关键字,用于声明方法可能会抛出的异常类型,示例如下:

java 复制代码
public void method() throws Exception {
    // 方法体
}

throws 是用在某个方法的方法声明上的,表示当前方法如果抛出了某些异常,将由调用者来进行异常处理。这种方式也可以让调用者知晓该对哪些异常进行处理。throws 声明的异常不一定会出现,只是一种可能。

java 复制代码
//调用者处理异常,有两种处理方式
    //第一种就是再次抛出
    //第二种用try和catch环绕
    public static void main(String[] args) throws Exception{
        try {
            Demo1();
        } catch (ArithmeticException e) {
            System.out.println(e.getMessage());
        }
    }

//    定义方法时,throws声明该方法可能抛出的异常类型
//    Exception包含所有异常类型
    public static void Demo1() throws ArithmeticException{
        int i=1/0;
        System.out.println(i);
    }

throw 是用在某个方法的方法体内的,当我们认定某种情况不合理时,就可以创建异常对象,封装好异常信息,然后通过 throw 来抛出异常并终止该方法。

java 复制代码
    public static void Demo2(int age){
        if(age<0||age>100){
            //throw用在Demo2(int age)方法的方法体内
            //括号里面提示出的什么问题
            throw new ArithmeticException("年龄不合法");
        }
    }