Java中一场分为两大类:编译时异常(非RuntimeException)和运行时异常(RuntimeException类及其子类),也被成为受检异常和非受检异常
1 . 编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译 (编译就是写代码的时候就会抛出的异常)
2 . 运行时异常,无需显示处理,也可以和编译时异常一样处理 (运行就是编译没有抛出异常,但是在运行之后抛出异常)
以下为编译和运行异常的测试
package 异常;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class 编译时异常和运行时异常的区别 {
/*
Java中一场分为两大类:编译时异常(非RuntimeException)和运行时异常(RuntimeException类及其子类),也被成为受检异常和非受检异常
.编译时异常:必须显示处理,否则程序就会发生错误,无法通过编译 (编译就是写代码的时候就会抛出的异常)
.运行时异常,无需显示处理,也可以和编译时异常一样处理 (运行就是编译没有抛出异常,但是在运行之后抛出异常)
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
//运行时异常
/*int arr[]= {0,1,2};
System.out.println(arr[3]);*/
/*Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at 异常.编译时异常和运行时异常的区别.main(编译时异常和运行时异常的区别.java:16)*/
//编译时异常
// int arr[]= {0,1,2}; 再次用变量arr就会出现编译异常
String ss ="2022-06-20 11:11:11";
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = null;
try {
dd = sdf.parse(ss);
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
System.out.println(dd);
}
}