실행 가능한 코드 내에서 발생한 에러를 다룬다는 점에서
예외 처리 라고도 부른다.
try {
console.log('에러 전');
const name = '짱구';
console.log(name);
name = "맹구";
const age = 5;
console.log(age);
} catch (error) {
console.log('에러 후');
}
출력 결과
에러 전
짱구
에러 후
❕ try 블록 내 에러가 발생한 시점 후의 코드는 실행되지 않는다. (age 출력 x)
❕ 에러가 발생하면 자동으로 에러의 내용이 담긴 에러 객체가 만들어지는데, 에러 객체는 기본적으로 에러 이름을 담고 있는 name 프로퍼티와 에러 내용을 담고 있는 message 프로퍼티를 가지고 있다.
// //try catch 문
// try {
// console.log(name);
// console.log('에러 전');
// const name = '짱구';
// name = "맹구";
// const age = 5;
// console.log(age);
// } catch (error) {
// console.log('에러 후');
// }
function printMembers(members) {
try {
for (const member of members) {
console.log(member);
}
} catch (error) {
console.log(`에러지롱`);
}
}
const teamA = ['짱구', '철수', '유리', '훈이', '맹구'];
printMembers(teamA);
const misun = { name: 'misun' };
printMembers(misun); // 객체는 for of 문 사용 x -> 에러 발생
const teamB = ['치타', '철벽', '준호', '광태', '미리'];
printMembers(teamB);
출력
짱구 철수 유리 훈이 맹구
에러지롱
치타 철벽 준호 광태 미리
finally문은 try...catch문이 끝난 다음에 최종적으로 실행될 코드를 다룰 때 활용
try {
// 실행할 코드
} catch (err) {
// 에러가 발생했을 때 실행할 코드
} finally {
// 항상 실행할 코드
}
발생한다면 catch문의 코드가 모두 실행된 다음 실행할 코드를 finally문에 작성즉, try문에서 어떤 코드를 실행할 때 에러 여부와 상관 없이 항상 실행할 코드를 작성
function printMembers(...members) {
for (const member of members) {
console.log(member);
}
}
try {
printMembers('짱구', '철수', '훈이');
} catch (err) {
alert('에러가 발생했습니다!');
console.error(err);
} finally {
const end = new Date();
const msg = `코드 실행을 완료한 시각은 ${end.toLocaleString()}입니다.`;
console.log(msg);
}
💡 에러 유무와 관계없이
코드 실행 시각을 알고 싶을 때 활용할 수 있다.