비정상적으로 종류되는 경우가 있다.
이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류 라고 한다.
컴파일 에러는 컴파일 할 때 발생하는 에러이고, 프로그램의 실행도중에 발생하는 에러를 ‘런타임 에러’ 라고 한다. 이 외에도 ‘논리적 에러’ 가 있는데 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다.
예를 들어, 창고의 재고가 음수가 된다던가, 게임 프로그램에서 비행기가 총알을 맞아도 죽지 않는 경우가 이에 해당 된다.
컴파일 에러 | 컴파일 시에 발생하는 에러 |
---|---|
런타임 에러 | 실행 시에 발생하는 에러 |
논리적 에러 | 실행은 되지만, 의도와 다르게 동작하는 것 |
소스코드를 컴파일 하면 컴파일러가 소스코드 에 대해 오타나 잘못된 구문, 자료형 체크등의
기본적인 검사를 수행하여 오류가 있는지 알려 준다.
컴파일러가 알려 준 에러들을 모두 수정해서 컴파일을 성공적으로 마치고 나면,
클래스 파일이 생성되고, 생성된 클래스 파일을 실행할 수 있게 되는 것이다.
실행도중에 발생할 수 있는 잠재적인 오류까지 검사할 수 없기 때문에 컴파일은 잘되었어도
실행 중에 에러에 의해서 잘못된 결과를 얻거나 프로그램이 비정상적으로 종료될 수 있다.
런타임 에러를 예를 들면, 실행 중 동작을 멈춘 상태로 오랜 시간 지속되거나,
갑자기 프로그램이 실행을 멈추고 종료되는 경우 등이 이에 해당한다.
자바 에서는 실행 시 발생할 수 있는 프로그램 오류를 ‘에러’ 와 ‘예외’ 두 가지로 구분하였다.
에러는 메모리 부족이나 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 심각한
오류이고 예외는 발생하더라도 수습될 수 있는 비교적 덜 심각한 것이다.
에러가 발생하면, 프로그램의 비정상적인 종료를 막을 길이 없지만, 프로그램의 비정상적인 종료를 막을 수 있다.
Reference
남궁 성 지음, 『자바의 정석』, 도우출판.