[Nodejs] 에러 핸들링
Error Handling
Status Code
- 1xx(정보) : 요청을 받았고, 프로세스를 계속 진행함
- 2xx(성공) : 요청을 성공적으로 받았고, 실행함
- 3xx(리다이렉션) : 요청 완료를 위한 추가 작업이 필요
- 4xx(클라이언트 오류) : 요청 문법이 잘못되었거나 요청을 처리할 수 없음
- 5xx(서버 오류) 서버가 요청에 대해 실패함
router.param((req, res, next, value) => {
// @ts-ignore
const user = USERS[value]
if (!user) = {
throw new Error('User not found')
}
})
app.use((err, req, res, next) => {
res.send(err.message)
})
위와 같이 인자를 4개로 받는 경우만 에러 핸들링으로 판단한다.
- statusCode를 404로 만들어 주기 위함
router.param((req, res, next, value) => {
// @ts-ignore
const user = USERS[value]
if (!user) = {
const err = new Error('User not found')
err.statusCode = 404
throw err
}
})
app.use((err, req, res, next) => {
res.statusCode = err.statusCode || 500
res.send(err.message)
})
statusCode가 없다면 internal server를 뜻하는 500
async로 하는 경우 무조건 try catch 문으로 감싸주어야 함.(서버가 터지는 걸 방지)
catch(err) {
next(err)
}
Connection Pool 개념
https://techbless.github.io/2020/01/17/Node-js%EC%97%90%EC%84%9C-Mysql-Connection-Pool-%EC%9D%B4%EC%9A%A9%ED%95%98%EA%B8%B0/
실수
- const {user} = req
- const user = req
- Provider의 비동기 함수를 실행했는데 호출하는 곳에서 await을 안 붙임
댓글남기기