Express
는 캐치하여 처리합니다.app.get("/", function (req, res) {
throw new Error("BROKEN"); // Express will catch this on its own.
});
next()
함수를 통해 에러를 전달해줘야 합니다.app.get("/", function (req, res, next) {
fs.readFile("/file-does-not-exist", function (err, data) {
if (err) {
next(err); // Pass errors to Express.
}
else {
res.send(data);
}
});
});
next()
함수 인자로 (route
를 제외하고) 어떤 것이는 전달하면 Express
는
현재 요청에 에러가 있고 남은 에러 핸들링을 하지 않는 라우팅이나 미들웨어
함수들을 건너 뛸 것입니다.app.get("/", [
function (req, res, next) {
fs.writeFile("/inaccessible-path", "data", next);
},
function (req, res) {
res.send("OK");
}
]);
fs.writeFile
의 콜백 함수로 next
함수가 전달 되었습니다.Express
가 에러를
캐치하고 처리합니다.app.get("/", function (req, res, next) {
setTimeout(function () {
try {
throw new Error("BROKEN");
}
catch (err) {
next(err);
}
}, 100);
});
try...catch
블락을 사용합니다. 비동기코드에서 에러를 캐치하고
Express
로 전달합니다.try...catch
블락이 생략된다면 Express
는 에러를 캐치하지 않을 것
입니다.promise
를 사용하거나 promise
를 반환하는 함수를 이용해서
try...catch
블락의 오버헤드를 피할 수 있습니다.app.get("/", function (req, res, next) {
Promise.resolve().then(function () {
throw new Error("BROKEN");
}).catch(next); // Errors will be passed to Express.
});
자바스크립트로 직접 만들면서 배우는 - 자료구조와 알고리즘 강의 바로 가기
실습으로 마스터하는 OAuth 2.0: 기본부터 보안 위험까지 - OAuth 2.0 강의 바로 가기
기계인간 이종립, 소프트웨어 개발의 지혜 - Git 강의 바로 가기
코드숨에서 매주 스터디를 진행하고 있습니다. 메일을 등록하시면 새로운 스터디가 시작될 때 알려드릴게요!