에러가 발생하면 에러 객체가 throw 된다. 이 에러 객체는 built-in constructor 인 EvalError, RangeError, ReferenceError, SyntaxError, TypeError, URIError에 의해서 생성된다. 이 constructor들은 모두 Error 객체로부터 상속된다.
에러가 발생하였을 때,try, catch, finally를 이용하여 에러를 핸들링하는 메커니즘을 만들면 아주 유용하다.
사용법은 간단하다.
try {
function(somethingToDo) {...}
} catch(error) {
function(error) {...}
} finally {
function(something) {...}
}
try statement 블록에 내가 하고자 하는 동작을 구현하고, catch 는 Error Object를 인수로 받아 처리한다. finally 키워드는 성공, 실패 여부 상관없이 실행될 코드이다.
Error Object의 대표적인 프로퍼티로 .name 과 .message가 있다. 이 두 프로퍼티는 브라우저 종류와 상관 없이 공통적으로 쓰이는 프로퍼티이며, 말그대로 에러의 이름과 에러 메세지를 반환한다. 하지만, 반환되는 값은 브라우저별로 다를 수 있다.
error.name : Error Object를 생성하는데 사용된 constructor의 이름을 반환한다.
error.message : 에러의 내용을 반환한다.
일부러 에러를 발생시키는 것 또한 가능하다.
throw new Error() 또는 다른 어떤 에러 constructor로 발생시킬 수 있다. throw statement를 통해 자바스크립트 엔진이 에러를 인식할 수 있게 한다.
new Error() 말고, 객체 리터럴 방식으로도 에러를 발생시킬 수 있다.
throw {
name: "MyError",
message: "Made by MySelf"
}