1. 일반(컴파일) 예외
2. 실행 예외
<error 예시1>
=============================코드=============================
public static void main(String[] args) {
System.out.println("프로그램 시작");
int num1 = 10, num2 = 0;
int result = num1 / num2;
System.out.println("result >>> " + result);
System.out.println("프로그램 종료");
}
}

에러가 뜸!!! 10을 0으로 나눌 수 없기 때문!
<error 예시2>
=============================코드=============================
public static void main(String[] args) {
System.out.println("프로그램 시작");
String str1 = "korea";
String str2 = null; // 값이 없는 상태
// length() : 현재 문자열의 길이를 정수값으로 반환해주는 메서드
System.out.println("str1 문자열의 길이 >>> " + str1.length());
System.out.println("str2 문자열의 길이 >>> " + str2.length());
System.out.println("프로그램 종료");
}
=============================실행=============================

문자형에 값이 없는 상태이기 때문에 마찬가지로 에러가 뜸!
<error 예시3>
=============================코드=============================
public static void main(String[] args) {
System.out.println("프로그램 시작");
Scanner sc = new Scanner(System.in);
//System.out.println("정수 하나를 입력하세요 : "); << 없을 경우 프로그램 시작 이후로 아무것도 안 뜸!
int su = sc.nextInt();
System.out.println("입력 받은 정수 >>> " + su);
System.out.println("프로그램 종료");
sc.close();
}

입력 받을 출력문이 없기 때문에 에러가 뜸