Java의 데이터 타입과 예외
Jim White
Java Developer
Error는 심각한 문제입니다import java.util.*;
public class CauseOutOfMemory {
public static void main(String[] args) {
List<Long> numbers = new ArrayList<Long>();
long counter = 0;
while (true) {
numbers.add(counter);
counter++;
}
}
}
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.base/java.lang.Long.valueOf(Long.java:1204)
at foo/exceptions.CauseOutOfMemory.main(CauseOutOfMemory.java:12)
| 체크 예외 | 런타임(비검사) 예외 | |
|---|---|---|
| 처리 필요 | 예 | 아니오 |
| 일반 원인 | 통제 불가 요인 | 프로그래밍 실수 |
| 복구 | 예상하면 대체로 가능 | 대개 불가 |
| 복구 방식 | try/catch 또는 throws | 예방 코딩이 최선 |
| 예시 | 파일을 찾을 수 없음 | 배열 인덱스 범위 초과 |
Exception의 하위 클래스 중 RuntimeException이 아닌 것은 체크 예외입니다FileNotFoundException)RuntimeException은 모든 비검사 예외의 상위 클래스입니다IndexOutOfBoundsException)ArithmeticException)| RuntimeException 하위 클래스 | 언제 발생하는가 |
|---|---|
| ArithmeticException | 0으로 나누기 등 잘못된 산술 연산 |
| IndexOutOfBoundsException | 배열, 문자열 등의 인덱스가 범위를 벗어남 |
| NegativeArraySizeException | 음수 크기의 배열 생성 시도 |
int y = 5/0; // ArithmeticException 발생 코드
int[] list = new int[-1]; //NegativeArraySizeException 발생 코드
Exception in thread "main" java.lang.ArithmeticException: / by zero
Exception in thread "main" java.lang.NegativeArraySizeException: -1
public class LoadClass {
public static void main(String[] args) {
Class myClass = Class.forName("com.mysql.Driver");
}
}
LoadClass.java:3: error: unreported exception ClassNotFoundException;
must be caught or declared to be thrown
Class myClass = Class.forName("com.mysql.Driver");
^
1 error
Java의 데이터 타입과 예외