Java中throw和throws关键字的区别

本文详细介绍了Java编程中throw和throws关键字的使用和区别。throw用于主动抛出异常,通常在代码中遇到特定问题时使用,可以传递异常信息。而throws则用于声明方法可能抛出的异常,将异常处理的责任交给调用者。在方法签名中使用throws,可以列出多个异常类型,每个异常间用逗号分隔。通过实例代码展示了如何在方法内部处理和抛出异常。
摘要由CSDN通过智能技术生成

Java异常处理中的throw和throws关键字到底怎么用,有何区别?

 

形式上:

throw是一个抛出异常的动作。也就是自己抛出个异常来“玩”,简单点理解就是在写代码的时候,你觉得这里会出现什么问题就把这个问题抛出去,提醒后面使用的人。类似于printf("注意啊,这里有坑,别踩啊。")

throws则是抛出异常的状态。如果你的方法里有异常出现,但是你不想处理(或者处理不了),那就用throws抛出去,给后面的人处理。throw抛出的异常,也可以在这里往外面继续抛。

class ExpressTest()  throws Exception{ //这里就是不处理Exception这个对象的异常,直接抛出去

public void printf(){

throw new Exception("注意啊,这个方法有异常,别用啊。");  //可以作为一个单独语句存在,不需要try-catch

}

}

内容上:

throw抛出的是一个异常类的对象,当然了,这个类可以自己创建。即抛出异常的具体内容。

throws则是抛出这个异常的类型,告诉你出现了异常,这个异常可以用try-catch捕获。

位置上:

throw可以在方法内部作为一个单独的代码块存在。

throws必须在方法体的头部,参数列表后面,如果有多个异常,则用逗号隔开(,)。

//定义一个自己的Exception类

class MyException extends RuntimeException{

    public MyException(String str){
        super(str)
    }

}

//测试类

class test{

    public static void mian(String[] args){

        String str1 = "1";
        String str2 = "2";

        //用try-catch捕获myMethod可能抛出的两个异常,这是throws抛出来的
        try{
            myMethod(str1);
            myMethod(str2);
        }catch(NumberFormatException exception){
            //这就是处理,这种处理方法是把异常的提示内容打印出来,内容就是throw抛出时异常类对象的    String类型的参数
            System.out.print(exception.getMessage)
        }catch(MyException exception){
            //这也是处理,而不是用throw抛出
            System.out.print(exception.getMessage)
    }    

}

//测试类里创建一个有异常抛出的方法

    void myMethod(String str)  throws MyException,NumberFormatException{ //throws只能在参数列表后面,方法内的异常没有处理,只是抛出,那throws在方法外面要继续抛出

        try{
            int number = Integer.parseInt(str);
            if(number == 1){
                throw new MyException("输入1异常");//在if语句里也作为单独的语句,而且是自己创建的异常类对象
            }

        }catch(NumberFormatException exception){
            throw new NumberFormatException("数据类型错误!");//throw在catch代码块中作为一个单独的语句
        }
    }
}

注意:在myMethod这个方法中,其实可以对异常进行处理,比如直接System.out.println("不能输入1!");,或者catch捕获到异常输出:exception.printStackTrace();但是,为了将throw这个关键字的作用表达出来,才这么写的。

说白了,throw就是将异常抛出去,不做处理,当然可以传递一些提示信息作为异常类对象的参数。

throws就是抛出方法里的所有出现的异常,告诉你我这里出现了这些异常,你要注意try-catch一下哈,这些异常在后者使用的时候可以用try-catch捕捉到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值