중복 사용자 발견
`UsersService.createUser()`는 이미 존재하는 username을 확인하고 Conflict 상황을 코드 이름으로 표현합니다.
`UserAlreadyExistsException`처럼 이름이 분명한 예외를 던지면, 필터는 상태 코드와 메시지를 일관된 JSON 구조로 정리합니다.
`UsersService.createUser()`는 이미 존재하는 username을 확인하고 Conflict 상황을 코드 이름으로 표현합니다.
`HttpException`을 상속해 409 상태와 사용자에게 보여줄 메시지를 함께 전달합니다.
`catch()`에서 status, request url, response payload를 읽어 API 규격에 맞춥니다.
예외 이름은 서버 코드에 남고, 응답에는 클라이언트가 처리할 수 있는 상태 코드와 설명만 담습니다.
409
요청 실패 시각
`/users`처럼 실패한 URL
중복 username을 설명하는 안전한 문장
`throw new UserAlreadyExistsException()`은 조건문보다 실패 이유를 더 직접적으로 드러냅니다.
내부 DB 오류, stack trace, 민감한 식별자는 필터에서 노출하지 않습니다.
Logger나 tracing provider에는 원인과 request id를 남겨 장애 분석에 사용합니다.