Skip to content

Commit

Permalink
feat: 행사 커스텀 예외 처리
Browse files Browse the repository at this point in the history
  • Loading branch information
Arachneee committed Jul 24, 2024
1 parent ce65a4c commit a2f63b8
Show file tree
Hide file tree
Showing 5 changed files with 95 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ServerApplication {
public class HaengdongApplication {

public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
SpringApplication.run(HaengdongApplication.class, args);
}

}
10 changes: 10 additions & 0 deletions server/src/main/java/server/haengdong/exception/ErrorResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package server.haengdong.exception;

public record ErrorResponse(
String message
) {

public static ErrorResponse of(HaengdongErrorCode errorCode) {
return new ErrorResponse(errorCode.getMessage());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package server.haengdong.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.HttpRequestMethodNotSupportedException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {

@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
public ResponseEntity<ErrorResponse> haengdongException() {
return ResponseEntity.badRequest()
.body(ErrorResponse.of(HaengdongErrorCode.BAD_REQUEST));
}

@ExceptionHandler(HaengdongException.class)
public ResponseEntity<ErrorResponse> haengdongException(HaengdongException e) {
return ResponseEntity.status(e.getStatusCode())
.body(ErrorResponse.of(e.getErrorCode()));
}

@ExceptionHandler(Exception.class)
public ResponseEntity<ErrorResponse> handleException(Exception e) {
log.error(e.getMessage(), e);
return ResponseEntity.internalServerError()
.body(ErrorResponse.of(HaengdongErrorCode.INTERNAL_SERVER_ERROR));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package server.haengdong.exception;

import lombok.Getter;
import org.springframework.http.HttpStatus;

@Getter
public enum HaengdongErrorCode {
BAD_REQUEST(HttpStatus.BAD_REQUEST, "잘못된 요청입니다."),
NOT_FOUND_EVENT(HttpStatus.NOT_FOUND, "존재하지 않는 행사입니다."),
INTERNAL_SERVER_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "서버 내부에서 에러가 발생했습니다."),
;

private final HttpStatus httpStatus;
private final String message;

HaengdongErrorCode(HttpStatus httpStatus, String message) {
this.httpStatus = httpStatus;
this.message = message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package server.haengdong.exception;

import lombok.Getter;
import org.springframework.http.HttpStatusCode;

@Getter
public class HaengdongException extends RuntimeException {

private final HaengdongErrorCode errorCode;
private final String message;

public HaengdongException(HaengdongErrorCode errorCode) {
this(errorCode, null);
}

public HaengdongException(HaengdongErrorCode errorCode, String message) {
this.errorCode = errorCode;
this.message = message;
}

public HttpStatusCode getStatusCode() {
return errorCode.getHttpStatus();
}

@Override
public String getMessage() {
if (message == null) {
return errorCode.getMessage();
}
return message;
}
}

0 comments on commit a2f63b8

Please sign in to comment.