#32 multi module: handle exception

This commit is contained in:
haerong22
2023-01-29 02:07:10 +09:00
parent e41d43cd65
commit 3894ada549
5 changed files with 86 additions and 0 deletions

View File

@@ -20,4 +20,9 @@ public class DemoController {
public String find() {
return demoService.find();
}
@GetMapping("/exception")
public String exception() {
return demoService.exception();
}
}

View File

@@ -0,0 +1,16 @@
package com.example.moduleapi.exception;
import com.example.modulecommon.enums.CodeEnum;
import lombok.Getter;
@Getter
public class CustomException extends RuntimeException {
private final String returnCode;
private final String returnMessage;
public CustomException(CodeEnum codeEnum) {
super(codeEnum.getMessage());
this.returnCode = codeEnum.getCode();
this.returnMessage = codeEnum.getMessage();
}
}

View File

@@ -0,0 +1,27 @@
package com.example.moduleapi.exception;
import com.example.moduleapi.response.CommonResponse;
import com.example.modulecommon.enums.CodeEnum;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
@RestControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(CustomException.class)
public CommonResponse<?> handleCustomException(CustomException e) {
return CommonResponse.builder()
.returnCode(e.getReturnCode())
.returnMessage(e.getReturnMessage())
.build();
}
@ExceptionHandler(Exception.class)
public CommonResponse<?> handleException(Exception e) {
return CommonResponse.builder()
.returnCode(CodeEnum.UNKNOWN_ERROR.getCode())
.returnMessage(CodeEnum.UNKNOWN_ERROR.getMessage())
.build();
}
}

View File

@@ -0,0 +1,33 @@
package com.example.moduleapi.response;
import com.example.modulecommon.enums.CodeEnum;
import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Builder;
import lombok.Getter;
@Getter
@Builder
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CommonResponse<T> {
private String returnCode;
private String returnMessage;
private T info;
public CommonResponse(CodeEnum codeEnum) {
this.returnCode = codeEnum.getCode();
this.returnMessage = codeEnum.getMessage();
}
public CommonResponse(T info) {
this.returnCode = CodeEnum.SUCCESS.getCode();
this.returnMessage = CodeEnum.SUCCESS.getMessage();
this.info = info;
}
public CommonResponse(CodeEnum codeEnum, T info) {
this.returnCode = codeEnum.getCode();
this.returnMessage = codeEnum.getMessage();
this.info = info;
}
}

View File

@@ -1,5 +1,6 @@
package com.example.moduleapi.service;
import com.example.moduleapi.exception.CustomException;
import com.example.modulecommon.enums.CodeEnum;
import com.example.modulecommon.sevice.CommonDemoService;
import lombok.RequiredArgsConstructor;
@@ -20,4 +21,8 @@ public class DemoService {
public String find() {
return "find";
}
public String exception() {
throw new CustomException(CodeEnum.UNKNOWN_ERROR);
}
}