개요
JavaScript는, 한줄씩 실행되는 인터프린터를 사용하는 프로그래밍 언어입니다.
크롬 브라우저에서 JavaScript가 실행된다면 인터프린터는 v8 엔진이라고 볼 수 있습니다.JavaScript는 한줄씩 실행되기 때문에 코드 중간에서 에러가 나게 되면 그 밑의 코드는 실행되지 않게 됩니다.try..catch 문법을 사용해서 스크립트가 죽는걸 방지 할 수 있습니다.
try – catch 는 동기적으로 동작한다.
특이 케이스에 대해서 설명하자면 try..catch 는 동기적으로 동작한다는 것입니다.
아래의 코드는 예외처리 되지 않습니다.
try {
setTimeout(() => {
noVariable; // 터지는 코드
}, 100);
} catch (e) {
alert("죽었다.");
}JavaScript실행하면 다음의 에러 메시지를 볼 수 있습니다.
Uncaught ReferenceError: noVariable is not defined
왜일까요?
인터프린터적인 관점으로 봤을 때 try..catch 구문은 이미 끝났다고 봐야하기 때문입니다.
예외처리를 해야 한다면 setTimeout 콜백 함수 안에서 try..catch를 해줘야 합니다.
setTimeout(() => {
try {
// 터지는 코드
noVariable;
} catch (e) {
alert("터졌는데요?");
}
}, 100);JavaScript실행 결과입니다.
