728x90
1. 컴파일 오류 (Compile-time Error)
코드를 컴파일할 때(= 실행 전) 발생하는 오류
문법적으로 잘못된 경우가 대부분입니다.
대표 예시
int x = "hello"; // 타입 오류
System.out.println(x // 괄호 닫지 않음
특징
항목 | 내용 |
발생 시점 | 코드 컴파일 중 |
주 원인 | 문법, 타입, 선언 오류 등 |
해결 방법 | IDE(이클립스, IntelliJ)에서 빨간 밑줄로 즉시 확인 가능 |
2. 런타임 오류 (Runtime Error)
프로그램 실행 도중 발생하는 오류
컴파일은 통과했지만, 실행 중 예외 상황이 발생해요.
대표 예시
int[] arr = {1, 2, 3};
System.out.println(arr[5]); // 배열 인덱스 초과
String str = null;
System.out.println(str.length()); // NullPointerException
특징
항목 | 내용 |
발생 시점 | 프로그램 실행 중 |
주 원인 | 배열 범위 초과, 0으로 나누기, null 접근 등 |
해결 방법 | try-catch 문, 디버깅으로 예외 추적 필요 |
두 오류 비교 정리
비교 항목 | 컴파일 오류 | 런타임 오류 |
시점 | 컴파일(작성) 중 | 실행 중 |
원인 | 문법/타입 오류 | 예외 상황, 논리 오류 |
발견 방법 | 컴파일러가 즉시 감지 | 실행해야 발견됨 |
예시 | 세미콜론 빠짐, 변수 미선언 | 배열 인덱스 오류, null 접근 |
해결 | 문법 수정 | 예외 처리 / 로직 수정 필요 |
실습 아이디어
- 컴파일 오류 intentionally 만들기 (int a = "문자열";)
- null, 0으로 나누기, 배열 범위 초과 실습 → try-catch로 예외 처리
- 사용자 입력 기반의 NumberFormatException 예외 확인
예외(Exception)과의 관계
- 대부분의 런타임 오류는 예외(Exception) 형태로 발생
- try-catch로 잡아서 처리할 수 있어요:
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
System.out.println("0으로 나눌 수 없습니다!");
}
마무리 요약
구분 | 컴파일 오류 | 런타임 오류 |
언제 발생? | 코드 작성/컴파일 시 | 실행 중 |
프로그램 실행 가능? | 실행 자체 안 됨 | 실행 도중 중단 |
예시 | 문법 오류, 타입 불일치 | 예외, 논리 오류 등 |
해결 방법 | 코드 문법 수정 | 예외 처리, 디버깅 등 |
LIST
'JAVA > 자바와 데이터 다루기' 카테고리의 다른 글
반복문과 함께 사용하기 (0) | 2025.04.13 |
---|---|
ArrayList, HashMap 사용해보기 (0) | 2025.04.13 |
BufferedReader, FileWriter 사용법 (0) | 2025.04.13 |
파일 쓰기/읽기 (0) | 2025.04.13 |