JavaScript 예외 처리(try catch)

개요

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

실행 결과입니다.

catch 문의 코드가 의도한대로 실행됨

참고

Leave a Comment