컴파일 에러 vs 런타임 에러 차이점
에러는 크게 컴파일 에러와 런타임 에러로 나눌 수 있다.
컴파일 에러와 런타임 에러의 차이점은 무엇일까?
📌컴파일 에러
◾ 컴파일이란?
소스코드를 다른 프로그램이나 기계가 처리하기 용이한 형태로 바꾸는 과정을 말한다.
이런 컴파일을 진행하는 일련의 과정을 컴파일 타임이라 한다.
◾ 컴파일에러
컴파일에러는 위의 정의와 같이 컴파일 과정, 즉 컴퓨터가 명령어를 번역하는 와중에 잘못된 명령어를 발견하여 알려주는 것이다.
컴파일 에러의 예는 다음과 같다. IDE에서 소스코드를 작성하다 보면 빨간 줄이 그어지는 것을 본 적이 있다. 이것이 컴파일 에러이다. 예를 들면 키워드 'class'를 'cls'와 같이 입력하여도 SyntaxError (문법적 오류) 로 컴파일 에러가 남을 알 수 있다.
- Syntax Error
- Type 체크 에러
- 파일 참조 오류
- 선언되지 않은 변수 사용
런타임 에러보다 훨씬 직관적이고 발견하기 쉬운 에러이다.
📌런타임 에러
◾ 런타임이란?
컴파일 과정을 마친 컴퓨터 프로그램이 실행되고 있는 환경 또는 동작되는 동안의 시간을 말한다.
◾ 런타임에러
소스코드가 이미 실행가능한 프로그램으로 성공적으로 컴파일이 되었더라도 여전히 프로그램의 실행 중 버그를 일으킬 수 있는데, 이렇게 프로그램의 실행중에 발생하는 형태의 에러가 런타임 에러이다.
컴파일 에러의 예는 다음과 같다. 다음 외에도 다양한 예가 존재한다.
- 메모리 부족 오류
- 0나누기 오류
- 인덱스 오류
- 타입 오류
- Null참조 오류
런타임에러는 소스코드 작성중에 컴파일 에러처럼 바로 알려주는 것이 아니기 때문에 실행을 해보았을 때 에러를 발견할 수 있다.
컴파일에러는 소스코드 작성 중 발견할 수 있는 에러이고, 이렇게 코드 작성 중 문제는 없으나 실행을 시켰을 때 발생하는 에러는 런타임에러이다. 즉 컴파일에러가 발생하지 않더라도 막상 실행을 시켜보았을 때 코드 상에 어떠한 문제가 있을 때 런타임에러가 발생하는 것이다.
참고사이트