* 에러 처리하기
1. 에러처리 내용을 담당할 클래스 정의
@Data
public class ErrorDetails {
private LocalDateTime timestamp;
private String message;
private String details;
}
2. 공통으로 사용할 핸들러 정의
@ControllerAdvice // 모든 컨트롤러에 적용되는 어노테이션
public class CustomizedResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {
@ExceptionHandler(Exception.class)
public final ResponseEntity<ErrorDetails> handleAllException(Exception ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails();
errorDetails.setTimestamp(LocalDateTime.now());
errorDetails.setMessage(ex.getMessage());
errorDetails.setDetails(request.getDescription(false));
return new ResponseEntity<ErrorDetails>(errorDetails, HttpStatus.INTERNAL_SERVER_ERROR);
}
@ExceptionHandler(UserNotFoundException.class)
public final ResponseEntity<ErrorDetails> handleUserNotFoundException(Exception ex, WebRequest request) {
ErrorDetails errorDetails = new ErrorDetails();
errorDetails.setTimestamp(LocalDateTime.now());
errorDetails.setMessage(ex.getMessage());
errorDetails.setDetails(request.getDescription(false));
return new ResponseEntity<ErrorDetails>(errorDetails, HttpStatus.NOT_FOUND);
}
}