โ ์ ๋ฅํ ํ๋ก๊ทธ๋๋จธ๋ ๊ทธ์ ๋๋๊ฐ ๊ฐ์ง๊ณ ์๋ ํ๊ณ๋ฅผ ๋๋ ท์ด ์์ํ๋ ์ฌ๋์ด๋ค.
๊ทธ๋ฌํ ํ๊ณ๋ฅผ ์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ธ์ ๋ ๊ฒธํํ ์์ธ๋ก ๋ํ๋ฉฐ, ์ํนํ ๊พ๋ฅผ ๋ถ๋ฆฌ๋ ๊ฑฐ์ ๊ทธ๊ฒ์ด ํ์ฌ๋ณ์ด๋ผ๋ ๋๋ ๊ฒ์ฒ๋ผ ๊ทน๊ตฌ ํผํ๋ค. โ- Edsger W. Dijkstra
1972๋ ํ๋ง์ ์์์

์๋ฌ ์ฒ๋ฆฌ ๋ฏธ๋ค์จ์ด
์๋ฌ ๋ฐ์ ์ ํ ํ๋ฆฟ ์์ง๊ณผ ์๊ด์์ด ํ ํ๋ฆฟ ์์ง ๋ณ์๋ฅผ ์ค์ ํ๊ณ error ํ ํ๋ฆฟ ๋ฌธ์๋ฅผ ๋ ๋๋ง.
Node
// ...
// 404 ์๋ฌ ๋ด์ฉ๋ถ๋ถ๋ง ๋ง๋ค์ด์ ์ต์ข
์ฒ๋ฆฌ๋ฅผ ์๋ฌ ๋ฏธ๋ค์จ์ ๋ณด๋ธ๋ค.
app.use((req, res, next) => {
const error = new Error(`${req.method} ${req.url} ๋ผ์ฐํฐ๊ฐ ์์ต๋๋ค.`);
error.status = 404;
next(error); // ์๋ฌ๋ฏธ๋ค์จ์ด๋ก ์ ํ
});
// ...
app.use((err, req, ers, next) => {
res.locals.message = err.message; // ํ
ํ๋ฆฟ ์์ง ๋ณ์ ์ค์
res.locals.rror = process.env.NODE_ENV !== 'production' ? err : {}; // ์ฆ, ๊ฐ๋ฐํ๊ฒฝ์ด๋ฉด err๋ฅผ ์ถ๋ ฅํ๊ณ ์๋๋ฉด ์ถ๋ ฅ์ํ๋ ์ค์
res.status(err.status || 500);
res.render('error');
});
Pug
extends layout
block content
h1= message
h2= error.status
pre #{error.stack}

์ธ์ฉํ ๋ถ๋ถ์ ์์ด ๋ง์ผ ๋๋ฝ๋ ์ถ์ฒ๊ฐ ์๋ค๋ฉด ๋ฐ๋์ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค
์ด ๊ธ์ด ์ข์ผ์ จ๋ค๋ฉด ๊ตฌ๋ & ์ข์์
์ฌ๋ฌ๋ถ์ ๊ตฌ๋
๊ณผ ์ข์์๋
์ ์์๊ฒ ํฐ ํ์ด ๋ฉ๋๋ค.