[Express] 오류 처리

2023. 7. 5. 23:13공부 중/Node.js

 

0. 참고자료

 

 

에러처리 - 생활코딩

수업소개 에러가 발생했을 때 처리하는 방법을 소개합니다.  강의 소스코드 변경사항 main.js var express = require('express') var app = express() var fs = require('fs'); var path = require('path'); var qs = require('querystrin

opentutorials.org

 

 

Express 오류 처리

오류 처리 다른 미들웨어 함수와 동일한 방법으로 오류 처리 미들웨어 함수를 정의할 수 있지만, 오류 처리 함수는 3개가 아닌 4개의 인수, 즉 (err, req, res, next)를 갖는다는 점이 다릅니다. 예를

expressjs.com

 


1. 오류 처리

 

다른 미들웨어 함수와 동일한 방법으로 오류 처리 미들웨어 함수를 정의할 수 있지만, 오류 처리 함수는 3개가 아닌 4개의 인수, 즉 (err, req, res, next)를 갖는다는 점이 다르다.

 

app.use(function(err, req, res, next) {
  console.error(err.stack);
  res.status(500).send('Something broke!');
});

오류 처리 미들웨어는 다른 app.use() 및 라우트 호출을 정의한 후에 마지막으로 정의해야 한다.

 

사용자의 요청에 적절한 응답을 수행할 방법을 찾지 못하면 최종적으로 에러를 응답한다.

 

next() 함수로 어떠한 내용을 전달하는 경우('route'라는 문자열 제외), Express는 현재의 요청에 오류가 있는 것으로 간주한다. (보통 next(err))

 

...
if (err){
    next(err);
}
...

이 경우 오류 처리와 관련되지 않은 나머지 라우팅 및 미들웨어 함수를 건너뛴다.

 

이러한 오류를 어떻게든 처리하기 원하는 경우, 다음 섹션에 설명된 것과 같이 오류 처리 라우트를 작성해야 한다.

 

app.use((err, req, res, next)=>{
    console.error(err.stack);
    res.status(500).send('Somethig is wrong!');
});

//app.listen( ... ) 바로 위에 위치