各位小伙伴们大家好,在之前的文章中小编介绍了异常的产生过程Java之异常产生过程解析,这次小编要介绍的是throw关键字,这个关键字可以在指定的方法中抛出指定的异常。
使用格式:throw new xxxException("异常产生的原因");
使用这个关键字,大家要注意以下几点:
throw关键字必须写在方法的内部。throw关键字后边new的对象必须是Exception或者Exception的子类对象。throw关键字抛出指定异常对象,我们就必须处理这个异常对象。
如果,throw关键字后边创建的是RuntimeException或者RuntimeException的子类对象,我们可以不处理,默认交给JVM处理(打印异常对象,中断程序)。
如果,throw关键字后边创建的是编译异常(写代码的时候报错),我们就必须处理这个异常,要么用throws,要么用try...catch。
代码如下:
public class Demo07Throw {
public static void main(String args[]){
String[] arr=null;
String e=getElement(arr,1);
System.out.println(e);
}
/*定义一个方法,获取数组指定索引处的元素
参数:
String[] arr
int index
首先要对传递过来的参数进行合法性效验,如果参数不合法,必须使用抛出异常的方式
,告知方法的调用者,传递的参数有问题*/
public static String getElement(String[] arr, int index){
/*对传递过来的参数数组进行合法性效验
如果数组arr的值是null
那么我们就抛出空指针异常,告知方法调用者“传递的数组值是null”*/
if(arr==null){
throw new NullPointerException("传递的数组值是null");
}
String ele=arr[index];
return ele;
}
}
运行结果:Exception in thread "main" java.lang.NullPointerException: 传递的数组值是null。
NullPointerException是运行期异常。
对传递过来的参数index合法性也可以进行效验,代码如下:
public class Demo08Throw {
public static void main(String args[]){
int[] arr=new int[]{1,2,3};
int e=getElement(arr,5);
System.out.println(e);
}
public static int getElement(int[] arr,int index){
/*对传递过来的参数index合法性的效验,
如果超出了数组的范围,就告知方法的调用者“传递的索引超出了数组的使用范围”*/
if(index<0||index>arr.length-1){
throw new ArrayIndexOutOfBoundsException("传递的索引超出了数组的使用范围");
}
int ele=arr[index];
return ele;
}
}
运行结果:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 传递的索引超出了数组的使用范围(数组索引越界)。这也是运行期异常,不需要处理。
关于throw这关键字可以在指点的方法中抛出指定的异常,不过对于throw关键字来说,运行期的异常是不会处理的,只会抛出。小编就先说到这里,希望这篇文章可以帮到大家,也欢迎各位小伙伴补充和纠错。
图片来自网络,如有侵权,请联系作者删除