You will be fine

Exception, 예외처리에 대해서..

by BFine
반응형

가. Excpetion에 대한 나의 생각

  • 테스트 코드를 작성하던중 문득 Exception에 대한 아쉬웠던 생각을 정리해봐야겠다.

  • 여러 책이나 글을 찾아보면 이론은 빠삭해진다... 예를들어

    1. Exception 이란 무엇인가!
    2. 에러, 체크예외, 언체크예외가 차이가 무엇인가!
    3. 예외처리 방법에 대한것(회피, 구체적으로 감싸기 등)
  • 뭔지는 알겠는데 뭔가 조금 아쉽다! 예전에 처음 공부할때 들었던 생각은

    1. 예외처리 하지않아도 서버는 다운되지 않는데?!
    2. 예외처리를 전역으로 한번에 하면 되지않나?!

나. Exception 테스트

  • 이런건 역시 직접 테스트를 해봐야한다.!!

  • View 페이지 요청시 Exception을 발생시켜보았다.

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b78a3673-b001-4418-85a0-984cd9ab751d/Untitled.png
    • 에러페이지가 나타나고 stackTrace가 보여진다.

      • Spring Boot에서 Excepction 발생한경우 자체적인 error 페이지로 리다이렉트

      • 이게 Spring의 default 예외처리 방법 

        1. 이거는 컨트롤러 클래스에서 throws Exception 해도 같다.

          → 즉 사용자 예외처리를 안한거와 같다.!

          = Spring의 디폴트 예외처리를 사용하겠다.

    • 이 Spring default 페이지의 문제점은 무엇일까

      1. StackTrace가 보여진다.
        • 예전에 인턴할때 StackTrace로 해킹이 할수 있다는 소리를 들었다.
        • 해커가 아니라 어떻게 하는지는 모르겠다..
        • 좀더 딥한 곳에서 Exception 발생할 경우
          • 불러온 메서드 전부를 보여줄것이다...
          • 내부 구조가 보여지는 사태가 발생한다..
      2. 사용자가 이페이지를 볼경우...
        • 고객센터가 난리난다.
    • 어떤오류가 발생할지 모르기 때문에 에러페이지는 꼭 만들자!

    • 이번엔 유저등록 API에 오류를 발생시켜본다.

      • 같은 이름으로 두번 요청 할경우(name에는 유니크 제약조건)

        https://s3-us-west-2.amazonaws.com/secure.notion-static.com/46f8ec0f-a684-4810-8aa9-5d03246bbcfc/Untitled.png
      • DataIntegrityViolationException 이 발생한다.

      • 이걸 전역으로 처리하면 어떻게 될까?

        1. 사용자는 내 이름이 중복되서 오류난건지 알수가 없다. → 계속시도
        2. 고객센터가 난리나거나, 이런거 왜써!→ 고객이 줄어듬..
      • Front에서 고객이 확인 해야하는 부분에 대한 Exception 처리는 반드시 해야한다.

    • 이외에도 Exception 발생할 경우 처리

      • 복잡한 데이터 처리 로직에 대해 DB를 rollback → 요게 가장 크다!
      • 개발자에게 알람, 로그테이블에 내역 추가 등

 

 

 

 

 

반응형

블로그의 정보

57개월 BackEnd

BFine

활동하기