关键字throw和throws的区别

抛出异常有三种形式,一是throw,一个throws,还有一种系统自动抛异常。

一:系统自动抛出异常:

当语句发生一些逻辑错误,语义错误时,或类型转换错误时,系统就会自动抛出异常。

public static void main(String[] args) { 
    int a = 5, b =0; 
    System.out.println(5/b); 
    //除数不能为0

此时系统会自动抛出ArithmeticException异常

二:throw

throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常。

public static void main(String[] args) { 
    String s = "abc"; 
    if(s.equals("abc")) { 
      throw new NumberFormatException(); 
    } else { 
      System.out.println(s); 
    } 
  }

在运行时,系统会抛出异常,是代码决定的主动抛出的

三:throws

throws 是方法可能抛出异常的声明。
throws:用在声明方法时,表示该方法可能要抛出异常,交给上层调用它的方法程序处理


public void function() throws Exception{......}


public class testThrows {
 
    public static void function() throws NumberFormatException {
        String s = "abc";
        System.out.println(Double.parseDouble(s));
    }
 
    public static void main(String[] args) {
        try {
            function();
        } catch (NumberFormatException e) {
            System.err.println("非数据类型不能强制类型转换。");
        }
    }
}

四:关键字throw和throws的区别

throw:
1)throw 语句用在方法体内,表示抛出异常,由方法体内的语句处理。
2)throw 是具体向外抛出异常的动作,所以它抛出的一定是一个异常实例,执行throw一定是抛出了某种异常。

throws:
1)throws 语句时用在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理。
2)throws 主要是声明这个方法会抛出某种类型的异常,让它的调用者要知道需要捕获的异常的类型。
3)throws 表示表现出现异常的一种可能性,并不一定会发生这种异常

五、编程习惯

  1. 在写程序时,对可能会出现异常的部分通常要用try{…}catch{…}去捕捉它并对它进行处理;
  2. 用try{…}catch{…}捕捉了异常之后一定要对在catch{…}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
  3. 如果是捕捉IO输入输出流中的异常,一定要在try{…}catch{…}后加finally{…}把输入输出流关闭
  4. 如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。

参考原文链接:https://blog.csdn.net/hjfcgt123/article/details/53349275

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值