抛出异常 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的这个构造方法
- 创建一个异常对象。封装一些提示信息(信息可以自己编写)。
- 需要将这个异常对象告知给调用者。怎么告知呢?怎么将这个异常对象传递到调用者处呢?通过关键字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声明,调用者也无需处理此异常
- 运行时期异常一旦发生,需要程序人员修改源代码.