try catch
: 코드 실행 중에 발생할 수 있는 오류를 처리하기 위해 사용
try {
...
}
catch (err) {
// 에러 핸들링
}
* err.name: 에러 이름
* err.message: 에러 내용
- 오직 런타임 에러에만 동작
- 동기적으로 동작
- 코드가 문법적으로 잘못된 경우엔 try..catch가 동작하지 않음
try {
console.log(value);
} catch (e) {
console.log(e.name); // ReferenceError
console.log(e.message); // value is not defined
}
예시
try {
const data = JSON.stringify({
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
})
const user = JSON.parse(data);
console.log(user.name); // Leanne Graham
console.log(user.value);
if (!user.value) {
throw new ReferenceError('해당 키 값은 존재하지 않습니다.')
}
} catch (error) {
console.log('JSON Error : ' + error.message);
}
에러 던지기 ⛔
: 에러를 만들어서 던짐
throw new Error('에러 문구')
throw 연산자
: 에러 객체를 던진다.
throw <error object>
- 숫자, 문자열 같은 원시형 자료를 포함한 어떤 것이든 에러 객체(error object)로 사용할 수 있다.
에러 객체 생성
new Error('에러 메세지')
new SyntaxError()
new ReferenceError()
- JS는 Error, SyntaxError, ReferenceError, TypeError등의 표준 에러 객체 관련 생성자를 지원한다.