[node.js] Error Handling
์๋ฒ err๊ฐ ๋ฐ์ํ๋ฉด err๋ฅผ ๋ฐ์์ํจ ๋ค์ err ๋ฉ์์ง์ status ์ฝ๋๋ฅผ ์ ๋ฌํด ์ค์ผํจ
๐error ๋์ง๊ธฐ
router.get('/:id', (req, res) => {
const userData = USER.find((user) => user.id === req.params.id);
if (userData) {
res.send(userData);
} else {
const err = new Error('ID not found');
err.statusCode = 404;
throw err;
}
});
์ด๋ฐ ๋ฐฉ์์ผ๋ก err๊ฐ ๋ฐ์ํ ์ง์ ์์ new Error๋ฅผ ํตํด err ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ throw๋ก ์ ๋ฌ
์ด๋ฐ ์์ผ๋ก err๊ฐ ๋ฐ์ํ๋๋ฐ ์ด๋ฐ ํ์ด์ง๋ ๊ฐ๊ธ์ ํผํ๋ ํธ์ด ์ข์ผ๋ฏ๋ก
app.js์์ err ํธ๋ค๋ง ํ๊ธฐ
๐app.js์์ err handling
app.js์ ๋ฏธ๋ค์จ์ด ์ค ๋ง์ง๋ง ๋ฏธ๋ค์จ์ด์ throw๋ err๋ฅผ ๋ฐ๋ ๋ฏธ๋ค์จ์ด ์ถ๊ฐ
app.use((err, req, res, next) => {
console.log(err.stack);
res.status(err.statusCode);
res.send(err.message);
});
๐๐ป ์์ธ์ ๊ณณ์์ ์๋ฌ๊ฐ ๋ฐ์ ํ์ ๊ฒฝ์ฐ
์ง์ ์ ์ํ error statusCode๊ฐ ์๋ ๊ณณ์์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด express๊ฐ ์์์ error statusCode ๋์ ธ์ค
ํ์ง๋ง ์์ ์ฝ๋์ฒ๋ผ ์ฒ๋ฆฌํ๋ฉด err.statusCode ๋ผ๋ ๊ณณ์๋ ์๋ฌ ์ฝ๋๊ฐ ๋ค์ด์์ง ์๊ธฐ ๋๋ฌธ์ res.status(undefind)๊ฐ ๋์ด ์๋์ฒ๋ผ ์๋ฌ๊ฐ ๋ฐ์
๊ทธ๋ ๊ฒ ๋๋ฌธ์ ์์ธ์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ์๋ฌ ์คํ์ ๋ณด๊ธฐ ์ํด์๋ ์๋์ฒ๋ผ ์ฝ๋ ์์ฑ
app.use((err, req, res, next) => {
console.log(err.stack);
res.status(err.statusCode || 500);
res.send(err.message);
});
-> ์ด๋์ ๋ฐ์ํ ๊ฒ์ธ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง ์๋ฒ์์ ๋ฌธ์ ์ด๋ฏ๋ก err ๊ฐ์ฒด์ statusCode๊ฐ ์์ผ๋ฉด 500์ ๋์ฐ๋ ๊ฒ
๊ทธ๋ผ, ์ด๋ ๊ฒ err.message๋ฅผ ๋ณผ ์ ์์ด์ err ํด๊ฒฐ ๊ฐ๋ฅ