throw 和 throws 的区别

5 篇文章 0 订阅

我们在运行一段代码,做一个项目的时候遇到BUG、异常是再正常不过的事情。说到异常,异常种类是有很多种的,Throwable就是异常的根类。
常见的异常就有在Throwable下的子类 错误 - Error异常 - Exception

Exception异常又分为一般异常运行时异常 RuntimeException(运行时异常不需要代码显示捕获)

既然说了异常,那么重点就来了,常用的两个抛出异常的方法throwthrows,单独从外表看一个“s”的区别但用法却大了很多。。。。。

throw:

  • 表示方法内抛出某种异常对象且只能是一个
  • 用于程序员自行产生并抛出异常
  • 位于方法体内部可以作为单独语句使用
  • 如果异常对象是非RuntimeException 则需要在方法申明时加上该异常的抛出,也就是加上throws 语句或者在try catch中处理异常,否则编译器会报错
  • 执行到 throw 语句则后面的语句块不再执行

代码示例:

package com.icss.interview;

import java.io.IOException;

/**
 * 这是测试throw和throws的区别的
 * @author HYF
 */
public class TestThrowThrows {
    public static void main(String[] args) {
        testThrows();

        Integer i = null;
        testThrow(i);

        String filePath = null;
        /**在 try catch 中处理异常**/
        try{
            testThrow(filePath);
        } catch (IOException e){
            e.printStackTrace();
        }
    }
	/**
     * 测试 throw 关键字 抛出运行时异常
     * @param i
     */
    public static void testThrow(Integer i ) {
        if (i == null) {
            /**运行时异常不需要在方法上申明**/
            throw new NullPointerException();
        }
    }
    /**
     * 测试 throw 关键字抛出非运行时异常,需要方法体添加 throws 异常抛出申明
     */
    public static void testThrow(String filePath) throws IOException {
        if (filePath == null) {
            /**非运行异常时需要在方法体上添加 throws 申明抛出异常**/
            throw new IOException();
        }
    }
}

throws:

  • 方法上定义上使用throws表示这个方法可能抛出某个异常(相比较于throw可能会有多个异常对象)------>当别人调用你的方法时看到有throws提醒别人可能存在异常需要注意,可能需要做出相应处理
  • 还可以是用于声明该方法抛出异常
  • 和throw的区别必须跟在方法参数列表后面,不能够单独使用
  • 第一点提到的警告作用,所以在处理异常的时候需要由调用者进行异常处理

代码示例:

package com.icss.interview;

import java.io.IOException;

/**
 * 这是测试thow和thows的区别的
 * @author HYF
 */
public class TestThrowThrows {
    public static void main(String[] args) {
        testThrows();

        Integer i = null;
        testThrow(i);

        String filePath = null;
        try{
            testThrow(filePath);
        } catch (IOException e){
            e.printStackTrace();
        }
    }
    /**
     * 测试 throws 关键字
     * @thows NullPointerException
     */
    public static void testThrows() throws NullPointerException {
        Integer i = null;
        System.out.println(i + 1);
    }

最后的运行结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值