Spring Boot2 (6) – Spring Exception Handling with ControllerAdvice
This commit is contained in:
31
src/main/java/com/rest/api/advice/ExceptionAdvice.java
Normal file
31
src/main/java/com/rest/api/advice/ExceptionAdvice.java
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
package com.rest.api.advice;
|
||||||
|
|
||||||
|
import com.rest.api.advice.exception.CUserNotFoundException;
|
||||||
|
import com.rest.api.model.response.CommonResult;
|
||||||
|
import com.rest.api.service.ResponseService;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.web.bind.annotation.ExceptionHandler;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseStatus;
|
||||||
|
import org.springframework.web.bind.annotation.RestControllerAdvice;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
@RestControllerAdvice
|
||||||
|
public class ExceptionAdvice {
|
||||||
|
|
||||||
|
private final ResponseService responseService;
|
||||||
|
|
||||||
|
// @ExceptionHandler(Exception.class)
|
||||||
|
// @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
|
// protected CommonResult defaultException(HttpServletRequest request, Exception e) {
|
||||||
|
// return responseService.getFailResult();
|
||||||
|
// }
|
||||||
|
|
||||||
|
@ExceptionHandler(CUserNotFoundException.class)
|
||||||
|
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
|
||||||
|
protected CommonResult userNotFoundException(HttpServletRequest request, CUserNotFoundException e) {
|
||||||
|
return responseService.getFailResult();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
package com.rest.api.advice.exception;
|
||||||
|
|
||||||
|
public class CUserNotFoundException extends RuntimeException {
|
||||||
|
public CUserNotFoundException(String msg, Throwable t) {
|
||||||
|
super(msg, t);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CUserNotFoundException(String msg) {
|
||||||
|
super(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CUserNotFoundException() {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.rest.api.controller.v1;
|
package com.rest.api.controller.v1;
|
||||||
|
|
||||||
|
import com.rest.api.advice.exception.CUserNotFoundException;
|
||||||
import com.rest.api.entity.User;
|
import com.rest.api.entity.User;
|
||||||
import com.rest.api.model.response.BasicResult;
|
import com.rest.api.model.response.BasicResult;
|
||||||
import com.rest.api.model.response.CommonResult;
|
import com.rest.api.model.response.CommonResult;
|
||||||
@@ -32,7 +33,8 @@ public class UserController {
|
|||||||
@GetMapping(value = "/user/{userId}")
|
@GetMapping(value = "/user/{userId}")
|
||||||
public BasicResult<User> findUserById(@ApiParam(value = "회원ID", required = true) @RequestParam int userId) {
|
public BasicResult<User> findUserById(@ApiParam(value = "회원ID", required = true) @RequestParam int userId) {
|
||||||
// 결과데이터가 단일건인경우 getBasicResult를 이용해서 결과를 출력한다.
|
// 결과데이터가 단일건인경우 getBasicResult를 이용해서 결과를 출력한다.
|
||||||
return responseService.getBasicResult(userJpaRepo.findById(userId).orElse(null));
|
// return responseService.getBasicResult(userJpaRepo.findById(userId).orElse(null));
|
||||||
|
return responseService.getBasicResult(userJpaRepo.findById(userId).orElseThrow(CUserNotFoundException::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ApiOperation(value = "회원 입력", notes = "회원을 입력한다")
|
@ApiOperation(value = "회원 입력", notes = "회원을 입력한다")
|
||||||
|
|||||||
Reference in New Issue
Block a user