본문 바로가기
반응형
Spring/MVC

[MVC] 정수 오버플로우 예외 처리 - GlobalExceptionHandler 활용

by brightGarden02 2024. 9. 5.

웹 개발을 할 때, 클라이언트가 서버로 잘못된 데이터를 전달하는 경우가 있다.

 

클라이언트가 일정 범위의 정수를 입력해야하는데 너무 큰 숫자를 입력하거나 잘못된 데이터를 전달하는 경우 발생하는 오류가 있다. 정수 오버플로우이다. 해결방안은 GlobalExceptionHandler를 통해서 전역적으로 예외를 처리하는 것이다.

 

int인 testId를 PathVariable로 받는 코드이다. 

@RequiredArgsConstructor
@Controller
@RequestMapping("/test")
public class TestController {

    @GetMapping("/{testId}")
    public String selectTest(@PathVariable("testId") int testId, Model model, HttpServletRequest httpServletRequest)

 

 

 

testId를 int의 범위를 넘어서는 숫자를 입력하게 되면 int overflow가 발생하면서 에러가 난다.

 

 

 

이 에러의 해결방안은 GlobalExceptionHandler에서 입력값이 잘못 들어왔을 경우 다음 메서드를 통해 404.html로 포워딩해주면서 해결 가능하다.

@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {


    // 정수 오버플로우
    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
    public void handleMethodArgumentTypeMismatchException(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        request.getRequestDispatcher("404").forward(request, response);
    }
    

 

 

GlobalExceptionHandler를 통한 정수 오버플로우 해결의 장점은 전역으로 예외 처리가 가능하다는 것이다. 코드 중복이 없이 예외를 일관되게 처리할 수 있다. 

댓글


반응형
반응형