一、异常
1、异常的概念:
异常指的是不正常, 指的是程序中出现了某些问题。
在Java中,所有的问题都可以使用一个类来表示,这个类叫做Throwable。
Throwable是Java中所有异常和错误的父类。
Throwable
|-- Error: 表示错误。 指的是不可挽回的严重问题。 相当于人得了绝症。
|-- Exception:表示异常, 指的是可以挽回的轻微问题。 相当于人得了感冒,咳嗽。
2、异常产生的过程
public class Demo02Exception {
public static void main(String[] args) {
//定义一个数组
int[] arr = new int[2];
//调用getValue方法,获取数组中索引为10的元素
int value = getValue(arr);
System.out.println("value:" + value);
}
/*
定义方法,用来获取数组中某个索引上的元素
*/
public static int getValue(int[] arr) {
int value = arr[10]; //JVM会自动创建一个异常对象,然后自动抛出.
return value;
}
}
3、throw 关键字
如果想要手动的创建一个异常并且手动的抛出去,那么我们就可以使用throw关键字。
格式:
throw new 异常类名();
注意:
如果在某个方法内抛出异常,那么这个方法剩下的代码就都不会执行。
public class Demo03Throw {
public static void main(String[] args) {
//创建数组
int[] arr = new int[2];
int value = getValue(arr, 10);
System.out.println("value:" + value);
}
/*
定义方法,获取数组中指定索引的数据
*/
public static int getValue(int[] arr, int index) {
//在JVM自动抛出异常之前,我们对索引的取值范围进行检测, 如果索引的取值范围不合法,那么我们就手动抛出一个异常
//索引的取值范围是: 0 ~ arr.length-1
if(index < 0 || index > arr.length - 1) {
//如果索引的取值范围不合法,那么我们就手动创建一个ArrayIndexOutOfBoundsException,并且手动抛出。
//如果想要创建异常对象的使用给这个异常带上异常信息,那么可以在异常的构造方法位置传递异常信息
String msg = "索引的取值范围必须是0到" + (arr.length - 1) + ", 您给的索引为:" + index;
throw new ArrayIndexOutOfBoundsException(msg);
}
System.out.println("你好");
return arr[index];
}
}
4、Objects中的requireNonNull
通过null去调用任何的属性和方法都会引发空指针异常
public class Demo04Exception {
public static void main(String[] args) {
//定义一个Object
Object obj = null;
//调用toString方法之前判断,如果obj是null,那么手动抛出一个异常
/*
if (obj == null) {
throw new NullPointerException();
}
*/
Objects.requireNonNull(obj, "程序出现了空指针");
obj.toString();//当代码执行到