Spring Boot2 (6) – Spring Exception Handling with ControllerAdvice

This commit is contained in:
kimyonghwa
2019-04-13 00:40:28 +09:00
parent bef447b6b8
commit f17ec807b5
3 changed files with 49 additions and 1 deletions

View 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();
}
}

View File

@@ -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();
}
}

View File

@@ -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 = "회원을 입력한다")