💡 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있습니다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 합니다.
✍️ 에러 (Error)
- 프로그램 코드에 의해서 수습될 수 없는 심각한 오류입니다. 에러는 프로그램의 실행을 중단시킬 수 있으며, 주로 시스템 레벨에서 발생하는 문제입니다.
✏️ 컴파일 에러
- 컴파일 시에 발생하는 에러입니다. 코드 문법이 잘못되어 컴파일러가 프로그램을 실행 파일로 변환하지 못하는 경우에 발생합니다.
- 예시: 구문 오류(
Syntax Error
), 데이터 타입 불일치(Type Mismatch
)
✏️ 런타임 에러
- 실행 시에 발생하는 에러입니다. 프로그램이 실행되는 동안 예상치 못한 상황이 발생하여 프로그램이 비정상적으로 종료됩니다.
- 예시: 메모리 부족(
OutOfMemoryError
), 스택 오버플로우(StackOverflowError
)
✏️ 논리적 에러
- 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것 입니다.프로그램이 논리적으로 잘못되어 잘못된 결과를 출력하는 경우에 발생합니다.
- 예시: 잘못된 알고리즘 구현, 조건문 오류
✍️ 예외 (Exception)
- 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류입니다. 예외는 프로그램이 실행 중에 발생할 수 있는 다양한 상황에 대해 적절히 대응할 수 있도록 해줍니다.
✏️ 일반 예외 (Exception)
- 컴파일러가 예외 처리 코드 여부를 검사하는 예외입니다.
- .주로 외부 자원의 문제로 발생하며, 파일 입출력이나 네트워크 통신 등에서 자주 발생합니다.
- 예시:
FileNotFoundException
(존재하지 않는 파일의 이름을 입력) , IOException
(잘못된 입력한 데이터 형식)
✏️ 실행 예외 (Runtime Exception)
- 컴파일러가 예외 처리 코드 여부를 검사하지 않는 예외입니다.
- 주로 프로그래머의 실수로 인해 발생합니다
- 예시:
IndexOutOfBoundsException
(배열의 범위를 벗어날 때), NullPointerException
(값이 null인 참조 변수의 멤버 호출)
✍️ 에러와 예외의 차이점
- 에러는 시스템 레벨에서 발생하며 복구가 거의 불가능한 반면, 예외는 프로그램 코드에서 처리할 수 있는 문제입니다.
- 따라서 에러가 발생하면 프로그램이 즉시 종료될 수 있지만, 예외는 적절한 예외 처리 코드를 통해 복구할 수 있습니다.