try catch문
//how catch err in program
function fail() {
try {
consol.log("just do");
// throw new Error("second err");
} catch (error) {
console.log("Its,,,fail", error);
}
}
fail();
위 try문의 console.log메서드를 일부러 오타를 내서 실행시켰다.
try가 정상동작하지 않으면 자동으로 catch문으로 넘어가며
catch문은 인자로 에러를 받아서 catch문 내에서 에러인자를 자유롭게 사용할 수 있도록 해준다.
try {
try {
never();
} catch (e) {
throw new Error(e);
}
} catch (e) {
console.log("got it", e);
}
catch문의 순서는 위와 같다.
정의되지 않은 never라는 함수의 실행에 실패하면
가까운 블록인 throw new Error가 먼저 실행될 것 같지만
바깥쪽 try문에 딸려있는 got it 에러문이 먼저 뜨며 해당 에러인자에
내부의 에러객체가 담겨서 콘솔에 찍히게 된다.
try {
setTimeout(function () {
fakevariable;
}, 1000);
} catch (e) {
console.log("cant catch async");
}
catch문은 비동기에서 발생한 에러는 잡아주지 못한다.
fakevariable이라는 말도 안 되는 식을 실행시켰지만
웬 이상한 숫자인 2065(아마도 타임아웃 시간을 말하는 듯)
만 내뱉고 정작 catch문은 아무 동작도 하지 않는 대신
setTimeout api에서 지원해 주는 오류메시지가 떠준다.
비동기 에러는 따로 처리하는 방법이 존재한다.
'Front-end > JavaScript' 카테고리의 다른 글
JS 에러 핸들링 4편 - async error handling (0) | 2023.08.09 |
---|---|
JS 에러 핸들링 3편 - promise catch (0) | 2023.07.31 |
JS 에러 핸들링 1편 - Error 생성자 (0) | 2023.07.28 |
JS 모듈 4편 - ES6 module (0) | 2023.07.25 |
JS 모듈 3편 - commonJS & AMD (0) | 2023.07.23 |