-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from HIFI-Team/dev
🚀 feat(exception): 전역 예외 처리 추가 #23
- Loading branch information
Showing
11 changed files
with
143 additions
and
106 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
43 changes: 43 additions & 0 deletions
43
src/main/java/Backend/HIFI/common/aop/ExceptionAdvice.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package Backend.HIFI.common.aop; | ||
|
||
import Backend.HIFI.common.entity.ErrorResponse; | ||
import Backend.HIFI.common.exception.*; | ||
import lombok.extern.slf4j.Slf4j; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.web.bind.annotation.ExceptionHandler; | ||
import org.springframework.web.bind.annotation.ResponseStatus; | ||
import org.springframework.web.bind.annotation.RestControllerAdvice; | ||
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler; | ||
|
||
@Slf4j | ||
@RestControllerAdvice | ||
public class ExceptionAdvice { | ||
|
||
@ExceptionHandler | ||
@ResponseStatus(HttpStatus.BAD_REQUEST) | ||
protected ErrorResponse handleBadRequestException(BadRequestException e) { | ||
log.error("BadRequestException : {}", e); | ||
return new ErrorResponse(e); | ||
} | ||
|
||
@ExceptionHandler | ||
@ResponseStatus(HttpStatus.UNAUTHORIZED) | ||
protected ErrorResponse handleUnauthorizedException(UnauthorizedException e) { | ||
log.error("UnauthorizedException : {}", e); | ||
return new ErrorResponse(e); | ||
} | ||
|
||
@ExceptionHandler | ||
@ResponseStatus(HttpStatus.NOT_FOUND) | ||
protected ErrorResponse handleNotFoundExceptionException(NotFoundException e) { | ||
log.error("NotFoundException : {}", e); | ||
return new ErrorResponse(e); | ||
} | ||
|
||
@ExceptionHandler | ||
protected ErrorResponse handleAllException(Exception e) { | ||
log.error("Exception : {}", e); | ||
return new ErrorResponse(BaseException.toBaseException(e)); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package Backend.HIFI.common.aop; | ||
|
||
import Backend.HIFI.common.entity.ErrorResponse; | ||
import Backend.HIFI.common.utils.ResponseUtil; | ||
import org.springframework.core.MethodParameter; | ||
import org.springframework.http.MediaType; | ||
import org.springframework.http.converter.HttpMessageConverter; | ||
import org.springframework.http.server.ServerHttpRequest; | ||
import org.springframework.http.server.ServerHttpResponse; | ||
import org.springframework.web.bind.annotation.RestControllerAdvice; | ||
import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice; | ||
|
||
@RestControllerAdvice | ||
public class ResponseAdvice implements ResponseBodyAdvice<Object> { | ||
|
||
@Override | ||
public boolean supports( | ||
MethodParameter returnType, | ||
Class<? extends HttpMessageConverter<?>> converterType) | ||
{ | ||
return true; | ||
} | ||
|
||
@Override | ||
public Object beforeBodyWrite( | ||
Object body, | ||
MethodParameter returnType, | ||
MediaType selectedContentType, | ||
Class<? extends HttpMessageConverter<?>> selectedConverterType, | ||
ServerHttpRequest request, ServerHttpResponse response) | ||
{ | ||
if (body instanceof ErrorResponse) | ||
return ResponseUtil.onError((ErrorResponse) body); | ||
return ResponseUtil.onSuccess(body); | ||
} | ||
} |
12 changes: 12 additions & 0 deletions
12
src/main/java/Backend/HIFI/common/entity/BasicResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package Backend.HIFI.common.entity; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Getter; | ||
|
||
@AllArgsConstructor | ||
@Getter | ||
public class BasicResponse<T> { | ||
private boolean success; | ||
private T response; | ||
private ErrorResponse errorResponse; | ||
} |
33 changes: 33 additions & 0 deletions
33
src/main/java/Backend/HIFI/common/entity/ErrorResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package Backend.HIFI.common.entity; | ||
|
||
import Backend.HIFI.common.exception.BaseException; | ||
import lombok.Getter; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
@Getter | ||
public class ErrorResponse { | ||
private final LocalDateTime timestamp = LocalDateTime.now(); | ||
private final int status; | ||
private final String error; | ||
// private final String code; | ||
private final String message; | ||
|
||
public ErrorResponse(BaseException e) { | ||
this.status = e.getHttpStatusCode().value(); | ||
this.error = e.getHttpStatusCode().name(); | ||
this.message = e.getMessage(); | ||
} | ||
|
||
// public static ResponseEntity<ErrorResponse> toResponseEntity(BaseException e) { | ||
// return ResponseEntity | ||
// .status(e.getHttpStatusCode()) | ||
// .body(ErrorResponse.builder() | ||
// .status(e.getHttpStatusCode().value()) | ||
// .error(e.getHttpStatusCode().name()) | ||
//// .code(errorCode.name()) | ||
// .message(e.getMessage()) | ||
// .build() | ||
// ); | ||
// } | ||
} |
2 changes: 0 additions & 2 deletions
2
src/main/java/Backend/HIFI/common/exception/BaseException.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
29 changes: 0 additions & 29 deletions
29
src/main/java/Backend/HIFI/common/exception/ErrorResponse.java
This file was deleted.
Oops, something went wrong.
46 changes: 0 additions & 46 deletions
46
src/main/java/Backend/HIFI/common/exception/GlobalExceptionHandler.java
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
package Backend.HIFI.common.utils; | ||
|
||
import Backend.HIFI.common.entity.ErrorResponse; | ||
import Backend.HIFI.common.entity.BasicResponse; | ||
|
||
public class ResponseUtil { | ||
public static <T>BasicResponse<T> onSuccess(T response) { | ||
return new BasicResponse<>(true, response, null); | ||
} | ||
public static BasicResponse<?> onError(ErrorResponse ex) { | ||
return new BasicResponse<>(false, null, ex); | ||
} | ||
} |