We will find a way, we always have.

-interstellar

예외 3

[Spring] 우리집을 못 찾겠군요 (feat: @RestControllerAdvice, @Order)

배경지식우리 코딩해듀오는 예외 상황을 좀 더 구체적으로 표현하고, 또 테스트도 정확하게 하고자 커스텀 예외를 사용하기로 컨벤션을 정했다. 그리고 각 도메인 별로 패키지를 나누어 각 패키지 마다 대빵 예외가 있고, 이 대빵 예외를 상속하는 세부 예외들이 있었다. @RestControllerAdvice도 각 패키지 안에 들어가 대빵 예외들을 잡아주고 common 패키지에선 최상위 예외인 Exception을 잡아주는 구조였다.    초반에는 각 도메인의 대빵 예외가 CoduoException이라는 찐대장 예외를 상속하는 구조였다가 너무 깊은 상속구조를 갖는 것 같아 CoduoExcpetion은 제거하였다.   문제 상황AccessCode로 페어룸을 찾는데 실패하면 PairRoomNotFoundException..

Spring 2024.08.18

[자바] 내가 커스텀 예외를 사용하게된 이유 (IllegalArgumentException, IllegalStateException)

서론지금까지 도메인 요구 사항에 맞지 않는 입력이 들어온다면 주로 IllegalArgumentException를 사용하였고 파라미터로 어떤 예외인지 메시지를 담아 의미를 전달하였다. 이녀석이 뭐 특별한 기능을 제공하느냐? 라고 물어본다면 네니오라고 답할 수 있다. IllegalArgumentException이 제공하는 기능은 의미를 전달하는 것이다. 다시말해 유효하지 않은 인자가 왔다는 의미를 전달하는데 요게 바로 특별한 기능이다. 나는 이 IllegalArgumentException 안에 메시지를 넣어 예외를 다르게 표현하는 방식을 사용해왔다. 프리코스 때 뿐만 아니라 우테코 들어와 자동차 미션, 사다리 타기 미션 때까지만하여도. 이때까진 커스텀 예외를 사용하는 크루를 보고 아 너무 오버 엔지니어링 아..

[자바] ENUM에서 equals() vs ==, NPE(NullPointerException)의 고찰

서론 자바는 상수를 우아하게 관리하기 위해 enum을 제공한다. 이때 enum 값들은 전부 상수로 관리되는데 이 값들을 비교할 때 equals 메서드를 사용하느냐 아니면 == 으로 비교하느냐에 대해 토론의 장이 열렸다. 스택 오버플로우에도 쏼라쏼라 말이 많은 주제인 듯 하다. 본론으로 가기전 짚어야 할 점은 enum의 equals 메서드는 final로 정의되어 있어 재정의가 불가하며, 안에서 ==을 사용하여 비교를 한다. 본론 첫번째로 enum의 값을 비교할 때 ==를 사용할 것인가 equals를 사용할 것인가에 대한 토론을 하였다. ==을 사용했을 때 얻을 수 있는 장점은 컴파일 타임에 체크가 가능하다는 것이고, 또한 NPE(NullPointerException)을 피할 수 있다는 것이었다. 그렇게 자..