Java中会常出现Error异常和Exception异常。Error和Exception都是Throwable的子类
Error类一般是与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
于是在我们编译的时候面对Exception可以改写代码来避免该类异常。下面是常见的Exception异常。
1.NullPointerException(空指针异常)
//在给新建对象的时候,因为某些原因导致对象不存在或者未被赋值的时候会抛出空指针异常
Boy boy = null;
System.out.println(boy.getName());
空指针异常不仅会在调用对象的时候发生,还可能会发生在数组和字符串身上。
int arr[] = null;
System.out.println(arr[0]);
String str = "abc";
str = null;
System.out.println(str.charAt(0));
因为在Java语言中,任何类型都可以赋值为null,所以Java语言中导致出现空指针异常的情况常常出现。
2.ArrayIndexOutOfBoundsException(数组索引越界异常)
int arr[] = {1,2,3};
System.out.println(arr[3]);
顾名思义就是访问没有对应索引的位置所导致的异常。
3.ClassCastException(类型转换异常)
Object obj = new Date();
String str = (String) obj;
不能强行转换的时候容易引发的异常
4.NumberFormatException(格式异常)
String str = "abc";
int num = Integer.parseInt(str);
抛出以表示应用程序已尝试将字符串转换为其中一个数字类型,但该字符串不具有相应的格式。
5.InputMismatchException(输入类型不匹配异常)
//当输入不为int型数字的时候,容易导致InputMismatchException
Scanner scanner = new Scanner(System.in);
int i = scanner.nextInt();
System.out.println(i);
6.ArithmeticException(算术异常)
//数学上无除以0的说法
int a = 10;
int b = 0;
System.out.println(a / b);