발생한 에러를 개발자가 직접 처리
에러 처리란 에러의 발생을 작업자가 직접 처리하는 것을 말한다.
기본적인 형식은 try ~ catch ~ finally
구문을 사용하며 try
는 실행 코드, catch
는 에러가 발생했을 때 처리 코드, finally
는 try, catch문 이후에 실행될 코드를 의미한다.
function readFile(path) {
throw new Error('파일 경로를 찾을 수 없음');
return '파일의내용';
}
function processFile(path) {
let content;
try {
content = readFile(path);
} catch (error) {
console.log(error.name);
console.log(error.message);
console.log(error.stack);
content = '기본내용';
} finally {
console.log('성공하든 실패하든 마지막으로 리소스를 정리할 수 있음!');
}
const result = 'hi ' + content;
return result;
}
const result = processFile('경로');
console.log(result);
`에러 버블링(Bubbling up) 또는 **
Propagating`은 _에러가 전파되어 올라가는 현상**_을 말한다.
특정한 곳에서 발생한 에러는 발생지부터 최종적으로 호출한 코드까지 에러가 전파된다.
즉 발생한 에러를 처리할 때는 효과적으로 처리할 수 있는 곳에서 해결하는 것이 좋다.
function a() {
// 에러 발생
throw new Error('error!');
}
function b() {
// 에러 전파
a();
}
function c() {
// 에러 전파
b();
}
try {
c();
} catch (error) {
console.log('Catched!');
}
console.log('done!');
제어 흐름과 오류 처리 - JavaScript | MDN
모던 자바스크립트 Deep Dive
모던 JavaScript 튜토리얼