<aside>
💡 프로그램 실행 중 어떤 원인에 의해서 오작동 하거나 비정상적으로 종료되는 경우, 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다.
</aside>
프로그램 오류 (발생 시점에 따른 분류)
컴파일 에러(compile-time error)
- 컴파일 시 발생하는 에러로 프로그램 코드 작성 중 실수로 발생
- 소스코드(*.java) 컴파일 시 컴파일러가 소스코드에 대해 오타나 잘못된 구문, 자료형 체크 등 기본적인 검사를 수행하여 오류가 있는지 알려준다. 이러한 과정을 거친 후에 컴파일을 성공적으로 마치면 클래스 파일(**.class)이 생성되어 실행할 수 있게 된다.
실행 에러(runtime error)
- 실행 시 발생하는 에러로 프로그램이 중지됨
→ 실행 오류 중 프로그램을 잘못 구현하여 의도한 바와 다르게 실행되어 생기는 오류를 **버그(bug)**라고 한다.
- 프로그램 실행 도중 발생할 수 있는 모든 경우의 수를 고려한 대비가 필요
- 에러와 예외로 구분할 수 있다.
논리적 에러(logical error)
- 컴파일과 실행은 잘 되지만 의도와 다르게 동작하는 것
ex) 상품 개수가 0이 되는 경우
에러(Error)와 예외(Exception)
에러(Error)
- 메모리 부족(OutOfMemoryError)이나 스택오버플로우(StackOverFlowError)와 같이 일단 발생하면 복구할 수 없는 심각한 오류 (자바 가상 머신에서 발생)
- 프로그램의 비정상적 종료를 막을 수 없다.