참고)
https://ko.javascript.info/try-catch
'try..catch'와 에러 핸들링
ko.javascript.info
모던 자바스크립트 Deep Dive
# try ... catch 문법
try {
// error가 없을 때 실행되는 코드
} catch(error) {
// error가 있을 때 실행되는 코드
}
① try {...} 안의 코드가 실행
② 에러가 없을 때 : try 안의 마지막 줄까지 실행되고, catch 블록은 건너뛴다.
③ 에러가 있을 때 : try 안 코드의 실행이 중단되고, catch(err) 블록으로 제어 흐름이 넘어간다. 변수 error에는 오류설명이 담긴 에러 객체를 포함된다.
※ 자바스크립트는 에러가 발생하면 그 즉시 스크립트가 중단(스크립트가 죽는다고 표현)되면서 콘솔에 에러가 출력된다.
→ try ... catch 문법을 사용하면 스크립트가 죽는 것을 방지할 수 있다.
예) 에러가 있을 때, (1)과 (3)이 출력된다.
try {
console.log('try block start'); // (1)
lalala; // → 이곳은 에러가 발생하는 줄(변수 지정X)
console.log('try block end'); // (2)
} catch(error) {
console.log('error!!'); // (3)
}
참고) try...catch는 동기적으로 동작한다.
- setTimeout 처럼 scheduled code에서 발생하는 예외는 try...catch에서 잡아낼 수 없다.
예)
try {
setTimeout(function() {
noSuchVariable; // script는 여기서 죽음
}, 1000);
} carch(err) {
console.log('작동 멈춤', err);
}
예)
setTimeout에 넘겨진 익명 함수는 엔진이 try..catch를 떠난 다음에서야 실행되기 때문입니다.
스케줄 된 함수 내부의 예외를 잡으려면, try..catch를 반드시 함수 내부에 구현해야 합니다.
setTimeout(function(){
try {
noSuchVariable;
} catch(error) {
console.log('에러 발생!', error);
}
}, 1000);
'JavaScript' 카테고리의 다른 글
[JavaScript] DOM (0) | 2024.06.19 |
---|---|
[JavaScript] 변수 (Variables) (0) | 2024.06.06 |