Controller Error
컨트롤러는 표현 계층, 즉 입력과 출력에 관련한 부분을 담당합니다. HTTP 통신을 처리하는 웹 서버의 관점에서는 http request (요청 입력), http response (응답 출력)을 담당하는 레이어입니다. 따라서 통신이 처음 시작될 때, 사용자로 부터 받은 정보를 클라이언트(프론트엔드)가 전달해주면, 해당 입력에 대한 유효성 검증을 처리하며 에러 및 예외가 발생할 수 있습니다.
KEY_ERROR가 대표적입니다. Request로 들어와야하는 정보 가운데 누락된 key가 있을 때를 지칭합니다. 클라이언트가 키를 누락시켰다는 것은, request body라는 객체 안에 email 이라는 특정 키가 없는 것을 말합니다.
- 회원가입 시 email, password 등 필수 필요 정보가 누락되었을 때
- 주문 생성 시 주문하는 제품에 대한 필수 정보 product_id, quantity, user_id 등이 누락되었을 때
Service Error
서비스 레이어는 주로 비즈니스 로직과 규칙을 설정하는 곳입니다. 이 곳에는 보통 기획에 따른 비즈니스 규칙에서 비롯된, 개발자가 직접 의도한 예외와 관련된 에러가 발생합니다. 에러의 발생 위치는 Service 단 하위에 위치한 계층의 모듈과, 직접 이곳에서 호출하는 서비스 모듈의 에러가 발생할 수 있습니다.
만일 비즈니스 규칙에 위반되는 사항이 발생가능하다면 꼭 이곳에서 필히 해당 문제의 경우에 상응한 Status Code와 함께 에러를 발생시켜야 합니다. 사용자의 요청의 문제가 아니라 내부 처리 과정 중 문제라면 500번대 Status Code를 보내는 것이 일반적입니다.
Dao Error
데이터 액세스 계층은 주로 영속적인 저장소와 관련된 코드를 작성하는 곳 입니다. 주로 데이터 베이스 드라이버가 위치하는 곳이기 때문에 데이터 베이스에 의존적인 에러가 발생할 수 있습니다.
아울러 Node + Express와는 다른 외부 시스템으로서 연동되어 있고, 이 때 주로 비동기 호출을 하기 때문에, 비동기 에러 핸들링에 적합한 방법을 이용해야 합니다. 만일 데이터베이스의 문제로 에러가 발생한다면 500번대 status code 를 보냅니다. 나머지 예외적인 사항(데이터 없음, 이상 현상)에서는 적절한 status code 및 에러를 던지면 됩니다.
이렇게 layer 별 에러 헨들링에 대하여 공부하였는데요. 더 많은 layer가 있지만 저는 아직 layer가 많지 않기 때문에 이정도로 작성했습니다. error handling 도 global 하게 핸들링할 수 있다고 합니다. 그것에 대해서는 다음에 공부하게 된다면 블로그 포스팅해보겠습니다.
'코딩 개발' 카테고리의 다른 글
Path parameter & Query parameter (0) | 2022.11.17 |
---|---|
RESTful API (0) | 2022.11.17 |
Error Handling (0) | 2022.11.14 |
MYSQL - WITH (0) | 2022.11.07 |
MYSQL - UNION (0) | 2022.11.07 |