在编写程序时要考虑程序的问题情况
函数的实参是你编写的,但在调用函数中传参的却不一定是你,你不知道在传参时,会有怎样的参数传入
例如:你是卖苹果的,具有卖苹果的功能,你有钱这个实参列表,传参的人不是你,你怎么知道不会有假币
在Java中出了问题,像数组获取元素这个函数,JVM会自己的打包对象抛出异常,但是他抛出的异常不清晰,因此想要更清晰的异常我们就要自己写,JVM抛出的异常不满足我们的需求,我们就要自己写好了自己抛
异常的应用:虚拟机抛出的异常不够清晰,不能满足我们的需求,因此自己写异常自己抛
*/
class Demo{
int GetElement(int a[],int index){
//传入的数组异常
if(a==null){
//一个十分常见的异常 空指针异常
throw new NullPointerException("a指向的数组不存在!!");//在API中可以查看构造:空参/字符串
}
//索引异常
if(index<0||index>=a.length){//当传入数组为空时程序在此就会出现异常
/*
该条件满足就是一个异常,该功能已经无法再进行运算,这时要抛出异常并且结束函数
怎么用?
1.创建一个异常对象。封装一些提示信息(可以自己定义)
2.需要将这个异常传递给调用者
3.在Java中关键字throw 用在函数中,抛出异常对象,并且结束函数
*/
//throw new ArrayIndexOutOfBoundsException(index);//在API中可以查到这个类的构造函数有三种形式——空参/非法索引下标/字符串
throw new ArrayIndexOutOfBoundsException("下标 "+index+"索引不存在!!");//参数为字符串(和输出语句差不多)
}
int element=a[index];
return element;
}
}
public class Example {
public static void main(String[] args){
Demo d=new Demo();
int a[]={12,36,85};
int num=d.GetElement(a ,5);//传参时出现的异常//下标越界//传入的数组为空
System.out.println("num = "+num);
System.out.println("over");
}
}
对于
NullPointerException//这个异常是非常常见的,
在API中的描述
-
当应用程序尝试在需要对象的情况下使用
null
时抛出。 这些包括:- 调用一个
null
对象的实例方法。 - 访问或修改
null
对象的字段。 - 取
null
的长度,好像是一个数组。 - 访问或修改的时隙
null
就好像它是一个数组。 - 投掷
null
好像是一个Throwable
价值。
- 调用一个
在程序中用到引用对象非常多,所以一定要有这样的异常定义
一般这些异常在Java的API文档中都能找到,对异常类名字可以直接复制