• Exection throws和throw


    抛出异常 throw

    假如在我们编写一个有参方法的时候,我们需要考虑到当调用者调用的时候,会传一些非法参数进来,我们需要对传入参数进行一个合法性判断,如果传入参数是非法的,我们就应该告诉调用者,必须传入一个合法的参数,这时候我们需要使用抛出异常的方式来告诉调用者。

    比如以下代码

        public Integer devision(Integer i){
            int j=1/i;
            return j;
        }

    当调用者传入的参数为0的时候,那么JVM肯定会抛出算数异常,Exception in thread "main" java.lang.ArithmeticException: / by zero
    所以我们要让调用者不能传非法参数进来。


    那么我们可以通过下面的方法来解决

    我们来看JDKAPI ArithmeticException的这个构造方法
    这里写图片描述

    1. 创建一个异常对象。封装一些提示信息(信息可以自己编写)。
    2. 需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字throw就可以完成。throw 异常对象;

    我们通过下面这段代码演示

       public static Integer devision(Integer i){
            if(i==0){
                throw new ArithmeticException("除数不能为0");
            }
            int j=1/i;
            return j;
        }

    声明异常throws

    这个关键字的作用是告诉调用者,如果方法内通过throw抛出了异常,调用者你必须去处理
    这个关键字必须写在方法上,声明异常格式

    修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2… {   }

    我们通过下面这段代码演示

     public static Integer devision(Integer i)throws Exception{
            if(i==0){
                throw new ArithmeticException("除数不能为0");
            }
            int j=1/i;
            return j;
        }

    这就告诉了调用者,我这里可能会出现异常,你必须去处理

    但是如果抛出的异常是,不是继承RuntimeExection类的话,那么就不强制调用者去处理,如果不是继承RuntimeExection那么就强制调用者去处理

    官方API解释

    这里写图片描述


    运行时期异常的特点:
    - 方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常
    - 运行时期异常一旦发生,需要程序人员修改源代码.

  • 相关阅读:
    APPlication,Session和Cookie的区别
    C# 中的Request对象的应用
    从字符串里提取一个列表(数组)
    UDP:用户数据报协议
    反射
    网络编程
    多线程
    final,finally和finalize的区别
    集合
    StringBuffer
  • 原文地址:https://www.cnblogs.com/aotemanzhifu/p/9192429.html
Copyright © 2020-2023  润新知