欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Exection throws和throw

程序员文章站 2022-07-14 10:41:01
...

抛出异常 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的这个构造方法
Exection throws和throw

  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解释

Exection throws和throw


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