프로그래밍 오류의 세 가지 유형
프로그래밍에서 발생하는 오류는 크게 세 가지로 나눌 수 있습니다.
- 구문 오류(Syntax Errors) — 코드 작성 규칙을 어겼을 때 발생
- 런타임 오류(Runtime Errors) — 프로그램 실행 중에 발생
- 논리 오류(Logical Errors) — 문법은 맞지만 결과가 의도와 다를 때 발생
이 중 런타임 오류는 예외(Exception)라고도 불리며, 컴파일 또는 인터프리팅이 끝난 후 실제 코드가 실행되는 시점에 발생합니다.
런타임 오류가 발생하는 이유
런타임 오류는 코드의 문법 자체는 올바르기 때문에 작성 단계에서는 잡아내기 어렵습니다. 대신 실행 과정에서 존재하지 않는 함수를 호출하거나, 정의되지 않은 변수에 접근하는 등의 상황이 벌어질 때 나타납니다.
예를 들어 아래 코드를 살펴보겠습니다.
<script> <!-- window.printme(); //--> </script>
이 코드는 문법적으로 전혀 문제가 없어 보입니다. 하지만 window 객체에는 printme()라는 메서드가 존재하지 않습니다. 따라서 스크립트가 실행되는 순간 존재하지 않는 메서드를 호출하려다 런타임 오류가 발생하게 됩니다.
예외(Exception)와 스레드 동작
흥미로운 점은 예외가 발생해도 그 영향이 해당 예외가 발생한 스레드에만 국한된다는 것입니다. 즉, 하나의 JavaScript 스레드에서 예외가 발생하더라도 다른 스레드들은 영향을 받지 않고 정상적으로 계속 실행됩니다.
이러한 특성 덕분에 일부 기능에서 오류가 발생하더라도 웹 페이지 전체가 멈추지 않고 동작을 이어갈 수 있습니다. 다만 안정적인 애플리케이션을 만들기 위해서는 try...catch 문을 활용해 예외를 적절히 처리하는 것이 좋습니다.