컴파일 에러(Compile Error)
컴파일 에러는 프로그램이 컴파일 과정에서 발생하는 에러로, 소스 코드를 기계어로 번역하지 못하게 합니다.
특징
발생 시점: 코드 작성 후 컴파일 시 발생.
원인: 코드 문법이나 타입 불일치 등 컴파일러가 감지 가능한 문제.
결과: 실행 파일이 생성되지 않으며 프로그램 실행이 불가능.
해결 방법: 컴파일러가 제공하는 에러 메시지를 보고 수정.
주요 원인 및 예시
1. 구문 오류(Syntax Error)
코드 문법이 잘못된 경우.
int x = ; // 초기값 누락
System.out.println("Hello World) // 따옴표 누락
2. 타입 오류(Type Error)
변수 타입이 잘못되었거나 호환되지 않는 경우.
String number = 123; // 문자열 변수에 정수 할당
3. 참조 오류(Reference Error)
정의되지 않은 클래스나 메서드를 참조한 경우.
System.out.printl("Hello World"); // 메서드 이름 오타
런타임 에러(Runtime Error)
런타임 에러는 프로그램이 컴파일은 성공했지만 실행 중에 발생하는 에러로, 프로그램이 비정상 종료되거나 의도한 대로 동작하지 않는 상황입니다.
특징
발생 시점: 실행 시간(컴파일 이후 프로그램 실행 중).
원인: 논리적 오류, 외부 환경 문제, OS 의존성 등 실행 시 감지되는 문제.
결과: 프로그램이 중단되거나 의도하지 않은 동작 발생.
해결 방법: 디버깅, 로그 분석 등을 통해 원인을 찾아 수정.
주요 원인 및 예시
1. 예외(Exception)
잘못된 연산, 입력값 처리 실패 등.
int[] numbers = {1, 2, 3};
System.out.println(numbers[5]); // ArrayIndexOutOfBoundsException
2. Null 참조 오류(NullPointerException)
객체가 null인데 접근하려 할 때.
String str = null;
System.out.println(str.length()); // NullPointerException
3. 자원 부족(Out of Memory)
메모리가 부족하거나 시스템 자원이 고갈된 경우.
List<int[]> largeList = new ArrayList<>();
while (true) {
largeList.add(new int[1000000]); // OutOfMemoryError
}
4. 외부 환경 문제
파일이나 네트워크 자원 접근 실패.
File file = new File("nonexistent.txt");
Scanner scanner = new Scanner(file); // FileNotFoundException
5. 운영 체제(OS) 의존성 문제
프로그램이 실행 중 특정 운영 체제의 기능(API)에 의존하는 경우, OS 업데이트가 없거나 다른 OS에서는 오류가 발생할 수 있음.
// Windows 전용 API 호출
boolean result = CreateSymbolicLinkW("link", "target", 0);
if (!result) {
System.out.println("Failed to create symbolic link.");
// 오류: 다른 OS에서는 이 함수가 존재하지 않음
}
주요 사례: 최신 Windows API를 사용하는 프로그램이 오래된 OS에서 실행 시 실패.
특정 드라이버가 없거나 호환되지 않아 프로그램이 충돌.
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.