카테고리 없음

TIL :: exception.filter / 기술면접 공부

두캔두잇 2023. 8. 19. 21:43

nest에서는 에러를 캐치하는 상황이 없다면 express처럼 어쩔수없이 에러를 뱉고 서버가 다운이된다.

매번 작업을하면서 서버를 다시키고 하는 번거로움이 있기에 다른 방법이 있을까? 하다가 알게된 점을 적는다.

 

1 .우선 폴더를 생성하고 파일을 만들어줘야함

그리고 나서 아래의 코드들을 추가해 준다.

import { ArgumentsHost, Catch, ExceptionFilter, HttpException } from '@nestjs/common';
import { Response } from 'express';

@Catch(HttpException) // Catch 데코레이터
export class HttpExceptionFilter implements ExceptionFilter {
  catch(exception: HttpException, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const response = ctx.getResponse<Response>();
    const status = exception.getStatus(); // 예외코드
    const message = exception.message; // 예외메세지

    response.status(status).json({ message });

    console.log('======================');
    console.log('예외가 발생했습니다.');
    console.log('예외내용', message);
    console.log('예외코드', status);
    console.log('======================');
  }
}

이렇게만 하면 끝..?  이 아니다!

 

2.각자만의 메인으로가면 ~~~listen(3000) 이라던가 포트가 있는쪽 윗줄로 가서

app.useGlobalFilters(new HttpExceptionFilter());

이렇게 추가해주면 끝이다!!

 

그리고 처음이신분들은 실수할수 있는데, 안에 HttpExceptionFilter 는 자동완성으로 tap키를 누르고 선언을 해줘야한다.

그 이유는 폴더안에 파일안에 있는 클래스이기때문에 따로 선언을 해줘야한다.

 

3. + 추가

 console.log('======================');
    console.log('예외가 발생했습니다.');
    console.log('예외내용', message);
    console.log('예외코드', status);
    console.log('======================');

이쪽에 있는 코드들은 지워주고 따로 설정을 해줘도 괜찮다. 그 이유는, 실제 서버가 배포되기전까지 에러가 어느 위치에서 나오는건지? 왜 나오는건지? 체크하기위해서 console을 찍는것이기 때문이다.

그래서 실제로 배포를 할땐 console쪽을 주석처리하고 서버다운만 방지하는 용도로 쓰인다!

 

# 기술면접 준비

< RDBMS의 정규화 >

우선 RDBMS는 관계형데이터 베이스라는 뜻이다. 이중에서도 여러가지의 테이블들이 있는데 그 관계들중에서는 부모테이블, 자식테이블들이 있을것이다. 그래서 PK(키),FK(외래키) 설정을 잘해야한다. 정규화중에서도 여러가지 정규화방식들이 많은데 이것을 다 이야기하기엔 너무 길어져서 블로그 출처를 남기며 보는것을 추천한다.

https://mangkyu.tistory.com/110

 

[Database] 정규화(Normalization) 쉽게 이해하기

지난 포스팅에서 데이터베이스 정규화와 관련된 내용을 정리했었다. 하지만 해당 내용이 쉽게 이해되지 않는 것 같아서 정규화 관련 글을 풀어서 다시 한번 정리해보고자 한다. 1. 정규화(Normaliz

mangkyu.tistory.com

 

개인 생각 : 쉽게 말해 정규화라는 것은 하나의 테이블들을 두개의 테이블로 분리를 시켜 상관관계가 있도록 하는것이다.