TIL 미완성 정리(Lv5&Lv6)
제가 생각한 코드: id에 대한 exception:
public class idException extends RuntimeException{ ;
public idException(){
super("잘못된 아이디 입니다");
}
}
@ExceptionHandler(idException.class)
protected ResponseEntity<String> handlePasswordException (idException ex){
return new ResponseEntity<>(ex.getMessage(),HttpStatus.BAD_REQUEST);
}
if (!(calendarRepository.checkId().contains(id))){
throw new idException();
}
제가 블로거에서 찾은 id에 대한 exception:
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public class CustomException extends RuntimeException {
private final ErrorCode errorCode;
}
@ExceptionHandler(CustomException.class)
protected ResponseEntity<ErrorDto> handleCustomException(CustomException ex) {
return ResponseEntity
.status(HttpStatus.valueOf(ex.getErrorCode().getStatus()))
.body(new ErrorDto(ex.getErrorCode().getStatus(), ex.getErrorCode().getMessage()));
}
public class ErrorDto {
int stauts;
String getErrorCode;
}
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class ErrorDto {
int stauts;
String getErrorCode;
}
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public enum ErrorCode {
//400 BAD_REQUEST 잘못된 요청
INVALID_PARAMETER(400, "파라미터 값을 확인해주세요."),
//404 NOT_FOUND 잘못된 리소스 접근
ID_NOT_FOUND(404, "존재하지 않는 ID 입니다."),
PASSWORD_NOT_FOUND(404, "맞지 않는 비밀번호입니다."),
USER_NOT_FOUND(404, "존재하지 않는 유저입니다."),
✅ 정리한 내용
- Enum을 사용한 에러 코드 관리
- 장점
- 에러 코드를 한 곳에서 관리 가능하여 가독성 증가
- 에러 코드 수정이 쉬워져 유지보수 용이
- 여러 CustomException 클래스를 만들지 않아도 되어 중복 코드 감소
- 단점
- static을 활용하므로 메모리 사용 증가
- 대규모 프로젝트에서는 하드웨어 성능이 좋다면 큰 문제가 없지만, 소규모 환경에서는 불필요한 리소스 차지 가능성 높음
- 결론 : 대규모 프로젝트에서 적합
- 장점
- Custom Exception 클래스를 개별적으로 나누는 방식
- 장점
- 각 예외를 클래스로 나누면 한눈에 확인 가능
- static을 사용하지 않으므로 메모리 소모 최소화
- 단점
- 여러 클래스를 생성해야 하므로 코드 분류가 번거로움
- 코드 중복성이 증가(extend 부분)하여 객체지향적이지 않음
- 수정 시 클래스 자체를 변경해야 할 가능성이 높음 → 유지보수 불편
- 결론: 소규모 프로젝트에서 적합
- 장점
- 질문 제가 정의한 내용이 맞는지 확인부탁드립니다. 또한 다른 장단점이 무엇인지 궁금합니다.
- 블로그에서 가져온 코드에서 protected으로 캡슐화를 왜 했는지는 모르겠습니다.
https://velog.io/@jujaeng2/10.-%EC%9C%A0%ED%9A%A8%EC%84%B1-%EA%B2%80%EC%82%AC%EC%99%80-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%ACSpring-Boot
https://priming.tistory.com/132
https://softwaresaramdle.tistory.com/20
10. 유효성 검사와 예외 처리[Spring Boot]
어플리케이션의 비즈니스 로직이 올바르게 동작하려면 사전 검증하는 작업이 필요하다. 이것을 유효성 검사(validation) 또는 데이터 검증이라고 부른다. 유효성검사는 매우 프로그래밍에서 매우
velog.io
[Java] Spring Boot 3 @Valid ExceptionHandler 예외 처리 방법
@Valid를 사용하여 요청값을 검증할 때 검증을 통과하지 못하면 응답값이 너무 많이 나오는 문제가 있습니다.요청 값 유효성 검사를 통과하지 못했을 때 예외 처리하는 방법을 설명드리겠습니다.
priming.tistory.com
[Spring Boot] Validation Annotation (DTO)
Validation은 데이터 유효성을 검사를 의미합니다. 이는 입력, 데이터 변환, 데이터 처리 등의 과정에서 데이터가 예상된 형식, 조건, 범위를 만족하는지 확인하는 과정입니다. 스프링부트에서 Va
softwaresaramdle.tistory.com
lv6은 문제는 없었고 추후에 개념적인 문제나 annotation의 종류 정리 잘 되어있는ㅠㅠ