{ throw new Error("woops"); // 이렇게 이 미들웨어에 에러가 발생하면 express는 // 이 에러를 에러 처리기(Handler)로 보냅니다. }); app.get("*", (req, res, next) => { console.log("this willl not print"); // 위에 에러가 발생했기 때문에 에러 처리기로 바로 가야 하기 때문에 이 미들웨어는 생략됩니다. // 왜냐하면 이 미들웨어는 에러 처리기(Error Handler)가 아니기 때문입니다. }); app.use((error, req, res, next) => { res.send({ message: error.message }); // 에러 처리기는 이렇게 4개의 인자가 필요합니다. // 그래서 첫 번째 미들웨어에서 발생한 에러 메시지를 이곳에서 처리해줍니다. }); app.listen(3000);"> { throw new Error("woops"); // 이렇게 이 미들웨어에 에러가 발생하면 express는 // 이 에러를 에러 처리기(Handler)로 보냅니다. }); app.get("*", (req, res, next) => { console.log("this willl not print"); // 위에 에러가 발생했기 때문에 에러 처리기로 바로 가야 하기 때문에 이 미들웨어는 생략됩니다. // 왜냐하면 이 미들웨어는 에러 처리기(Error Handler)가 아니기 때문입니다. }); app.use((error, req, res, next) => { res.send({ message: error.message }); // 에러 처리기는 이렇게 4개의 인자가 필요합니다. // 그래서 첫 번째 미들웨어에서 발생한 에러 메시지를 이곳에서 처리해줍니다. }); app.listen(3000);"> { throw new Error("woops"); // 이렇게 이 미들웨어에 에러가 발생하면 express는 // 이 에러를 에러 처리기(Handler)로 보냅니다. }); app.get("*", (req, res, next) => { console.log("this willl not print"); // 위에 에러가 발생했기 때문에 에러 처리기로 바로 가야 하기 때문에 이 미들웨어는 생략됩니다. // 왜냐하면 이 미들웨어는 에러 처리기(Error Handler)가 아니기 때문입니다. }); app.use((error, req, res, next) => { res.send({ message: error.message }); // 에러 처리기는 이렇게 4개의 인자가 필요합니다. // 그래서 첫 번째 미들웨어에서 발생한 에러 메시지를 이곳에서 처리해줍니다. }); app.listen(3000);">
const app = require("express")();
app.get("*", (req, res, next) => {
throw new Error("woops");
// 이렇게 이 미들웨어에 에러가 발생하면 express는
// 이 에러를 에러 처리기(Handler)로 보냅니다.
});
app.get("*", (req, res, next) => {
console.log("this willl not print");
// 위에 에러가 발생했기 때문에 에러 처리기로 바로 가야 하기 때문에 이 미들웨어는 생략됩니다.
// 왜냐하면 이 미들웨어는 에러 처리기(Error Handler)가 아니기 때문입니다.
});
app.use((error, req, res, next) => {
res.send({ message: error.message });
// 에러 처리기는 이렇게 4개의 인자가 필요합니다.
// 그래서 첫 번째 미들웨어에서 발생한 에러 메시지를 이곳에서 처리해줍니다.
});
app.listen(3000);
원래는 위에서 처럼 에러 처리를 해주면 되지만, 비동기 요청으로 인한 에러를 이렇게 처리해주면
에러 처리기에서 저 에러 메시지를 받지 못하기 때문에 서버가 Crash 되어 버립니다.
const app = require("express")();
app.get("*", (req, res, next) => {
setImmediate(() => {
throw new Error("woops");
});
});
app.use((error, req, res, next) => {
res.send({ message: error.message });
});
app.listen(3000);
// Error: woops at Immediate.<anonymous> ...
const app = require("express")();
app.get("*", (req, res, next) => {
setImmediate(() => {
throw next(new Error("woops")); // next() add
});
});
app.use((error, req, res, next) => {
res.send({ message: error.message });
});
app.listen(3000);