-
서버에서 에러 처리하기 - CodeHan의 코딩공부BackEnd/개념정리 2022. 9. 12. 12:20반응형
서버에서 에러처리를 제대로 하지 못하면 App을 이용하는 모든 사용자에게 피해가 간다.
내가 만든 App이나 Web에서 발생한 에러를 어떻게 처리해야 효율적일까?
(본 내용은 Express.js를 기반으로 작성되었습니다.)
에러를 잘 처리한다는 것은 뭘까?
에러를 잘 처리한다는 것은 Client가 요청한 request를 제대로 처리하지 못했다면,
Client에게 적절한 error message와 statusCode를 전송하는 것과 문제가 발생했을 때
서버가 죽지 않도록 하는 것으로 생각해볼 수 있다.
에러를 처리하는 방법은?
Express.js에선 최하단에 위치한 listen(port)위에 app.use를 이용해서 발생하는 Error를 처리해줄 수 있다.
하지만 이 최하단에 위치한 에러를 처리하는 미들웨어는 안전망이라는 개념이 강하므로 각각의 요청에 맞는
middleWare에서 적절한 처리를 해주는 것이 좋다.
동기함수 에러 처리하기
동기함수는 try & catch로 에러처리를 해준다.
비동기함수 에러 처리하기
비동기함수는 error가 발생해도 error인자가 최하단에 위치한 안전망에 도달하지 않고
비동기 함수 내 error처리하는 부분으로 전달되기 때문에 비동기함수 내에서 error처리를 해주어야 한다
.Promise함수 역시 .then().catch()로 처리해야 한다.
Async Await은?!
Await함수 자체는 동기적이지만 return은 promise로 되기 때문에 최하단 안전망에 도달하지 않는다.
따라서 await함수를 try & catch로 감싸서 에러를 처리해야 한다.
비동기함수도 마지막 안전망에 도달하게 할 수는 없을까?
있다.
Express.js 5.0.0 ver에서 해당 error를 처리하는 방법을 만들었다.
프로미스를 리턴하면 별다른 에러처리를 하지 않더라도 최하단 안전망에 도착한다.
결론 :
Error마다 상세하게 처리해주기 귀찮다면 express.js 5.0.0이상 ver사용하자.
그렇지만 나는 좀 더 사용자에게 유의미한 에러를 처리해주는게 좋다고 생각한다.
반응형'BackEnd > 개념정리' 카테고리의 다른 글
ExpressJs 유용한 미들웨어 모음 - CodeHan의 코딩공부 (0) 2022.09.14 Express.js Router 사용하기 - CodeHan의 코딩공부 (0) 2022.09.12 Express.js로 서버 만들기 - CodeHan의 코딩공부 (0) 2022.09.12 Node로 JSON 주고받기 - CodeHan의 코딩공부 (0) 2022.09.11 Node로 서버 시작하기 - CodeHan의 코딩공부 (0) 2022.09.11