Skip to content

Commit

Permalink
feat: handle validation exception
Browse files Browse the repository at this point in the history
  • Loading branch information
CChuYong committed Jul 8, 2024
1 parent 21ab136 commit 2999ab7
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface MatchEnum {
String message() default "ํƒ€์ž…์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค";
String message() default "ENUM ํƒ€์ž…์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
Class<? extends java.lang.Enum<?>> enumClass();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,45 @@
package kr.mafoo.photo.config;

import jakarta.validation.ConstraintViolationException;
import kr.mafoo.photo.controller.dto.response.ErrorResponse;
import kr.mafoo.photo.exception.DomainException;
import kr.mafoo.photo.exception.ErrorCode;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.bind.support.WebExchangeBindException;

@ControllerAdvice
@RestControllerAdvice
public class WebExceptionHandler {
@ExceptionHandler(DomainException.class)
public ResponseEntity<ErrorResponse> handleDomainException(DomainException exception) {
return ResponseEntity
.badRequest()
.body(ErrorResponse.fromErrorCode(exception.getErrorCode()));
}

@ExceptionHandler({MethodArgumentNotValidException.class,
ConstraintViolationException.class,
WebExchangeBindException.class})
public ResponseEntity<ErrorResponse> validException(Exception ex) {
String errorMessage = "์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ ์˜ค๋ฅ˜: ";
if (ex instanceof MethodArgumentNotValidException mex) {
errorMessage += mex.getBindingResult().getAllErrors().get(0).getDefaultMessage();
} else if (ex instanceof ConstraintViolationException cvex) {
errorMessage += cvex.getConstraintViolations().iterator().next().getMessage();
} else if (ex instanceof WebExchangeBindException wex) {
errorMessage += wex.getAllErrors().get(0).getDefaultMessage();
} else {
errorMessage += "์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜";
}
ErrorResponse response = new ErrorResponse(
ErrorCode.REQUEST_INPUT_NOT_VALID.getCode(),
errorMessage
);

return ResponseEntity
.badRequest()
.body(response);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
@RequiredArgsConstructor
public enum ErrorCode {

REDIRECT_URI_NOT_FOUND("EX001", "๋ฆฌ๋‹ค์ด๋ ‰ํŠธ URI๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"),
REDIRECT_URI_NOT_FOUND("EX0001", "๋ฆฌ๋‹ค์ด๋ ‰ํŠธ URI๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"),
REQUEST_INPUT_NOT_VALID("EX0002", "์ž…๋ ฅ ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."),

ALBUM_NOT_FOUND("AE0001", "์•จ๋ฒ”์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"),
PHOTO_NOT_FOUND("PE0001", "์‚ฌ์ง„์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค"),
Expand Down

0 comments on commit 2999ab7

Please sign in to comment.