异常:
在Java语言中,将程序执行中发生的不正常情况称为“异常” 。 (开发过程中的语法错误和逻辑错误不是异常)
异常的两类:
Error:
Java虚拟机无法解决的严重问题。如:JVM系统内部错误、资源耗尽等严重情况。
如:StackOverflowError(栈溢出)和OutOfMemoryError(堆溢出)。一般不编写针对性的代码进行处理。
Exception:
其它因编程逻辑错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。
运行时异常(unchecked,RuntimeException):编译器不要求强制处置的异常,java.lang.RuntimeException类及它的子类都是运行时异常
|——-NullPointerException 空指针异常,
int[] arr = null;
System.out.println(arr[3]);
String str = “abc”;
str = null;
System.out.println(str.charAt(0));
|——-IndexOutOfBoundsException 角标越界
ArrayIndexOutOfBoundsException
int[] arr = new int[10];
System.out.println(arr[10]);
StringIndexOutOfBoundsException
String str = “abc”;
System.out.println(str.charAt(3));
|——-ClassCastException 类型转换异常
Object obj = new Date();
String str = (String)obj;
|——-NumberFormatException 编号格式异常
String str = “123”;
str = “abc”;
int num = Integer.parseInt(str);
|——-InputMismatchException 输入不匹配异常
Scanner scanner = new Scanner(System.in);
int score = scanner.nextInt();
System.out.println(score);——->输入类型非int
|——-ArithmeticException 算术异常
int a = 10;
int b = 0;
System.out.println(a / b);
编译时异常(checked):编译器要求必须处置的异常
|——-IOException
|——-FileNotFoundException
|——-ClassNotFoundException
File file = new File(“hello.txt”);
FileInputStream fis = new FileInputStream(file); Unhandled exception type FileNotFoundException
int data = fis.read();Unhandled exception type IOException
while(data != -1){
System.out.print((char)data);
data = fis.read();——-Unhandled exception type IOException
}
fis.close();Unhandled exception type IOException