본문 바로가기

JavaScript/Modern JavaScript

[JavaScript] 에러와 에러 객체

다음과 같은 코드가 있다. 이를 실행하면

console.log('시작');

const name = '신짱구';
console.log(name);
console.log(age);

console.log('끝');

정의 되지 않은 age 변수에 의해 에러가 발생하고, '끝' 이라는 문자열은 출력되지 않는다.

 

자바스크립트로 안정적인 프로그램을 만들기 위해서는, 이러한에러를 다루는 방법이 중요하다.

자바스크립트는 코드를 실행할 때, 에러가 발생하면 그 에러에 대한 정보를 담은 에러 객체를 생성함. console 에서보는 에러메세지도 에러 객체를 담고 있음.

 

에러객체는 에러의 이름을 담은 name 프로퍼티와, 내용을 담은 message 프로퍼티를 가지고 있다.

 

에러는 크게 세 타입으로 분류될 수 있는데,

 

1. 존재하지 않는 함수나 변수를 호출할 때 발생하는 에러인 RefferenceError 

 

2. 잘못된 방식으로 자료형을 다룰때 발생하는 TypeError ex) 문자열에 splice 메소드를 사용한다던지.. 

 

3. 문법에 맞지 않게 코드를 작성할때 발생하는 SyntaxError 

- 특히 이 에러는 코드 자체를 실행하기도 전에 에러가 발생한다.

 

다른 에러 객체의 종류

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Error

 

Error - JavaScript | MDN

Error 객체는 런타임 오류가 발생했을 때 던져집니다. Error 객체를 사용자 지정 예외의 기반 객체로 사용할 수도 있습니다. 아래 표준 내장 오류 유형을 참고하세요.

developer.mozilla.org

 


에러객체에는 이름을 담은 name 프로퍼티와 내용을 담은 message 프로퍼티를 가지고 있다.

에러객체의 이름과 내용의 형식을 맞추면 직접 에러 객체를 만들어 낼 수 있다.

 

다음과 같이 에러객체를 만들어 에러를 인위적으로 발생시키면,

console.log('시작')

const error = new TypeError('타입 에러가  발생했습니다!');

throw error; // 에러를 인위적으로 발생시킴

console.log(error.name);
console.log(error.message);

console.log('끝')

작성한 에러 객체가 에러로 발생하는 것을 확인할 수 있다.  또한, 에러가 발생한 시점 이후의 코드는 동작하지 않음.