프로그래밍을 하다보면 크고 작은 오류가 발생한다. MDN 문서에서 수 없이 많은 에러의 종류를 확인 할 수 있는데, 자바스크립트는 프로그램이 실행 되기 전에 발생하는 ‘구문 오류'와 프로그램 실행 도중 발생하는 ‘예외' 두 가지 상황으로 인해 오류가 발생한다. 이 두 가지 상황에 대해 먼저 알아보자.
function error(){
console.log('이 코드는 syntaxError가 던져질 거에요!'
}
이렇게 코드를 실행하면 콘솔에 ‘Syntax Error’가 찍힌다. 구문오류는 오류의 위치와 오류의 내용을 친절히 알려주기 때문에 비교적 쉽게 해결할 수 있다.
런타임오류(runtime error) 또는 예외(exception)란? 코드의 실행 중간에 발생하는 오류로 ‘Syntax Error’ 이외의 모든 오류를 예외로 분류한다 (예: Reference Error, RangeError, TypeError, URIError 등). 프로그램을 실행할 때 발생하기 때문에 코드 실행 이전에는 오류를 발견하기 어렵다.
아래와 같이 존재하지 않는 메소드를 호출하면 ‘TypeError’ 오류가 발생한다.
window.printf();
위 두 종류의 오류는 콘솔에 자동으로 검출되어 출력된다. 때문에 해당하는 오류 문구를 검색하여 수정하면 되므로 처리가 비교적 용이하다. 반면에 ‘논리적 오류(Logical Error)’는 그 원인을 파악하기 어려운 에러다. 코드 작성자의 논리적 실수가 있어 예상한 값이 출력되지 않는 경우인데, 프로그램은 정상적으로 동작하고 종료된다.
function add(a,b) {
console.log(a * b)
};
add(3,5);