对传递到后台的参数进行合法性校验:
public static void main(String[] args){
method(null);
}
public static void method(Integer a){
if (a == null) {
throw new NullPointerException("这个方法method()的入参为空");
}
System.out.println(a);
}
输出:
Exception in thread "main" java.lang.NullPointerException: 这个方法method()的入参为空Objects.requireNonNull()判断空
String b = null;
"A".equals(b);
Objects.requireNonNull(b);//对这个参数判空,抛出空指针异常.
Objects.requireNonNull(b,"这个方法中传递的参数为空");
Throwable类常用的3个异常处理方法:
1. getMessage() 返回简短信息
2. toString() 返回详细信息
3.printStackTrace() JVM打印的最全面的异常信息(异常位子,内容,信息等)
多个异常捕获的3种处理方式:
1.多个异常分别处理
快捷键:ctrl+alt+t 选中要包裹的方法
List2.多个异常一次捕获,多次处理list = null; try { int[] arr = {1,2,3}; System.out.println(arr[3]); list = new ArrayList<>(); } catch (Exception e) { e.printStackTrace(); } try { list.add(1); list.add(2); list.add(3); System.out.println(list.get(3)); } catch (Exception e) { e.printStackTrace(); } System.out.println("后续代码");
注意:catch()中定义的异常变量如果有子父类关系,子类的异常必须在上面.
运行时异常也可以不处理,让JVM自动处理
try {
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list.get(3));
} catch (ArrayIndexOutOfBoundsException e) {//处理数组越界异常
e.printStackTrace();
} catch (NullPointerException e) {//处理空指针异常
e.printStackTrace();
}
System.out.println("后续代码");
3.多个异常一次捕获一次处理
try {
int[] arr = {1, 2, 3};
System.out.println(arr[3]);
List list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
System.out.println(list.get(3));
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("后续代码");
自定义异常类


