Java-异常
1.概念
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jKKlNPc3-1650940577153)(C:\Users\limingwei6\AppData\Roaming\Typora\typora-user-images\image-20220425160153898.png)]
2.异常体系结构
* java.lang.Throwable
* |-----java.lang.Error:一般不编写针对性的代码进行处理。
* |-----java.lang.Exception:可以进行异常的处理
* |------编译时异常(checked)
* |-----IOException
* |-----FileNotFoundException
* |-----ClassNotFoundException
* |------运行时异常(unchecked,RuntimeException)
* |-----NullPointerException
* |-----ArrayIndexOutOfBoundsException
* |-----ClassCastException
* |-----NumberFormatException
* |-----InputMismatchException
* |-----ArithmeticException
3.code举例
- 错误
package p8exception;
public class ErrorTest {
public static void main(String[] args) {
// 栈溢出 java.lang.StackOverflowError
main(args);
// 堆溢出 java.lang.OutOfMemoryError(简称OOM)
Integer[] arr = new Integer[1024*1024*1024];
}
}
- 异常
package p8exception;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.util.Date;
import java.util.Scanner;
public class ExceptionTest {
//******************************************编译时异常******************************//
//FileNotFoundException 编译时异常
@Test
public void test7() {
File file = new File("hello.txt");
FileInputStream fils = new FileInputStream(file);
int data = fils.read();
while (data != -1) {
System.out.print(data);
}
fils.close();
}
//******************************************运行时异常******************************//
//空指针异常 java.lang.NullPointerException
@Test
public void test1() {
int[] arr = null;
System.out.println(arr[3]);
String str = null;
// 调用null 的 toString方法
System.out.println(str.toString());
}
//数组角标越界 java.lang.ArrayIndexOutOfBoundsException
@Test
public void test2() {
// int[] arr = new int[10];
// System.out.println(arr[10]);
// 字符串角标越界 java.lang.StringIndexOutOfBoundsException
String str = "aka";
System.out.println(str.charAt(3));
}
// 类型转换异常 java.lang.ClassCastException
@Test
public void test3() {
Object obj = new Date();
String str = (String)obj;
}
// 类型转换异常 NumberFormatException
@Test
public void test4() {
String str = "abc";
int num = Integer.parseInt(str);
}
// 输入类型不匹配 InputMismatchException
@Test
public void test5() {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入数字:");
int score = scanner.nextInt();
System.out.println(score);
}
//数学异常 java.lang.ArithmeticException
@Test
public void test6() {
int a = 10;
int b = 0;
System.out.println(a/b);
}
}
n
@Test
public void test6() {
int a = 10;
int b = 0;
System.out.println(a/b);
}
}