抛出异常与声明异常

抛出异常与声明异常

抛出异常

抛出异常关键字:throw,抛出异常是指在方法体内手动抛出异常错误,与系统直接报错相同也会导致程序的异常终止,但是可以自定义异常信息,一般常用于抛出编译期异常(必须做处理)
抛出异常格式:throw new 异常类(异常信息);

  • throw:固定语法
  • new 异常类(异常信息):需要抛出的异常类型,一般用于给调用者看(允许抛出自定义异常)
    • 异常信息:报错时显示异常信息
    private static int getArrayIndexData(int[] arr, int index) {
        // 判断index是否合法
        if (index < 0 || index >= arr.length) {
            // 如果小于0或大于等于数组长度则报异常
            // 抛出编译期异常时必须做处理,如果不做处理则无法通过编译,并且idea会报红色波浪线取错
            throw new Exception("抛出编译期异常...");// alt+enter
        }
        return arr[index];
    }

声明异常

声明异常关键字throws声明异常是指将当前方法中的异常声明抛出,告诉调用者我这里可能会存在异常,但是我没有处理,让调用者处理,有点踢皮球的意思
声明异常可以解决方法中的编译期异常无法编译的问题
声明异常格式:修饰符 返回值类型 方法名称(形参列表) throws 声明异常类型1,声明异常类型2,声明异常类型n...{方法体}

    /**
     * 	声明异常主要作用是为了给调用者看,一般声明异常不会声明运行期异常,因为没有任何意义
     *	在main方法程序注入口上声明的异常交由JVM虚拟机处理,JVM会抛出这个异常信息并终止程序
     * @throws Exception 声明编译期异常等于告诉调用这里有异常,但是我不处理,交由调用者处理异常
     */
    private static void func02() throws Exception {
        // 抛出编译期异常
        throw new Exception("编译期异常...");
    }

throws是讲异常声明抛出给调用者,但是自己不处理,目的是为了解决方法中的编译期异常,然后当调用者调用此方法时会有错误提示,方法的调用再进行处理(也可以声明抛出或使用捕获异常解决这个问题),声明抛出的异常最多到main方法,main是由JVM虚拟机执行,最终由JVM虚拟机报出这个异常终止程序执行
注意:尽管声明异常非常方便以及简单,但是最终一定要将异常解决掉,否则无法正常运行代码

throw与throws区别

  1. throw
    1. 抛出异常,告诉程序哪里有异常,会导致程序的异常终止,并且使用编译期异常时必须做处理(声明异常或捕获异常)否则无法通过编译
    2. 在方法体内写抛出异常
  2. throws
    1. 声明异常,告诉调用者此方法可能会出现有异常,但是方法的编写者没有处理,一般针对于解决throw抛出的编译期异常,只要是编译期异常都可以使用此关键字解决,并且一次可以声明多个编译期异常
    2. 声明异常到最终调用者时必须做处理(异常捕获),否则程序的终止一样会发生
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值