하이퍼파라미터 기능 추가
This commit is contained in:
@@ -482,37 +482,40 @@ public class GlobalExceptionHandler {
|
||||
@ExceptionHandler(CustomApiException.class)
|
||||
public ApiResponseDto<String> handleCustomApiException(
|
||||
CustomApiException e, HttpServletRequest request) {
|
||||
|
||||
log.warn("[CustomApiException] resource : {}", e.getMessage());
|
||||
this.errorLog(request, e);
|
||||
|
||||
String codeName = e.getCodeName();
|
||||
HttpStatus status = e.getStatus();
|
||||
// String message = e.getMessage() == null ? ApiResponseCode.getMessage(codeName) :
|
||||
// e.getMessage();
|
||||
//
|
||||
// ApiResponseCode apiCode = ApiResponseCode.getCode(codeName);
|
||||
//
|
||||
// ErrorLogEntity errorLog =
|
||||
// saveErrorLogData(
|
||||
// request, apiCode, status, ErrorLogDto.LogErrorLevel.WARNING, e.getStackTrace());
|
||||
//
|
||||
// ApiResponseDto<String> body =
|
||||
// ApiResponseDto.createException(apiCode, message, status, errorLog.getId());
|
||||
|
||||
// enum에 없는 codeName이면 IllegalArgumentException 방지
|
||||
ApiResponseDto.ApiResponseCode apiCode = null;
|
||||
try {
|
||||
apiCode = ApiResponseDto.ApiResponseCode.getCode(codeName);
|
||||
} catch (Exception ignore) {
|
||||
apiCode = null;
|
||||
}
|
||||
|
||||
// 메시지 우선순위: 예외 message > enum message > fallback
|
||||
String message;
|
||||
if (e.getMessage() != null && !e.getMessage().isBlank()) {
|
||||
message = e.getMessage();
|
||||
} else if (apiCode != null) {
|
||||
message = apiCode.getText(); // enum 기본 메시지
|
||||
} else {
|
||||
message = "서버에 문제가 발생 하였습니다."; // 최후 fallback
|
||||
}
|
||||
|
||||
// 로그/응답 코드: enum 없으면 기본코드로
|
||||
ApiResponseDto.ApiResponseCode safeCode =
|
||||
(apiCode != null) ? apiCode : ApiResponseDto.ApiResponseCode.INTERNAL_SERVER_ERROR;
|
||||
|
||||
ErrorLogEntity errorLog =
|
||||
saveErrorLogData(
|
||||
request,
|
||||
ApiResponseCode.getCode(codeName),
|
||||
HttpStatus.valueOf(status.value()),
|
||||
ErrorLogDto.LogErrorLevel.WARNING,
|
||||
e.getStackTrace());
|
||||
request, safeCode, status, ErrorLogDto.LogErrorLevel.WARNING, e.getStackTrace());
|
||||
|
||||
return ApiResponseDto.createException(
|
||||
ApiResponseCode.getCode(codeName),
|
||||
ApiResponseCode.getMessage(codeName),
|
||||
HttpStatus.valueOf(status.value()),
|
||||
errorLog.getId());
|
||||
|
||||
// return new ResponseEntity<>(body, status);
|
||||
return ApiResponseDto.createException(safeCode, message, status, errorLog.getId());
|
||||
}
|
||||
|
||||
private void errorLog(HttpServletRequest request, Throwable e) {
|
||||
|
||||
@@ -189,7 +189,12 @@ public class ApiResponseDto<T> {
|
||||
}
|
||||
|
||||
public static ApiResponseCode getCode(String name) {
|
||||
return ApiResponseCode.valueOf(name.toUpperCase());
|
||||
if (name == null || name.isBlank()) return null;
|
||||
try {
|
||||
return ApiResponseCode.valueOf(name.toUpperCase());
|
||||
} catch (IllegalArgumentException ex) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static String getMessage(String name) {
|
||||
|
||||
Reference in New Issue
Block a user