최대 1 분 소요

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을 안 붙임

댓글남기기