Programming/Spring

스프링 프레임워크 기초: 스프링MVC 예외 처리

vita12321 2023. 8. 5. 16:13
728x90
반응형

스프링 프레임워크는 애플리케이션 개발을 효율적으로 지원하는 자바 기반 오픈 소스 프레임워크입니다. 글에서는 스프링MVC에서 예외 처리에 관한 상세한 설명을 제공하겠습니다.


 

1. 스프링MVC 예외 처리 개요

에러 또는 예외가 발생할 있는 상황은 애플리케이션 개발 과정에서 흔한 상황입니다. 예외들을 적절하게 처리하고 사용자에게 친절한 메시지와 함께 적절한 동작을 유도하면 서비스 품질과 사용자 경험이 개선됩니다. 스프링MVC에서는 다양한 방법으로 예외 처리를 있으며, 이를 통해 개발자들은 애플리케이션 개발 필요한 예외 처리 방법을 적합하게 선택 구현할 있습니다.


 

2. 스프링MVC 예외 처리 방법

스프링MVC에서 제공하는 예외 처리 방법은 크게 가지로 나뉩니다. 이제 방법에 대해 자세하게 살펴보겠습니다.

 

1) @ExceptionHandler 어노테이션 사용

 

@ExceptionHandler 어노테이션을 사용하여 컨트롤러에서 발생하는 특정 예외를 처리할 있습니다. 컨트롤러에서 특정 예외에 대한 처리 로직을 구현하기 위해 해당 어노테이션을 사용하며, 프레임워크에서 발생한 예외를 전달받아 처리합니다.

 

컨트롤러 클래스에서 @ExceptionHandler 어노테이션을 사용한 예시는 다음과 같습니다.

@Controller

public class MyController {

    @GetMapping("/example")

    public String exampleMethod() {

        // 비즈니스 로직 수행

        return "example";

    }

   

    @ExceptionHandler(MyCustomException.class)

    public ModelAndView handleMyCustomException(MyCustomException ex) {

        ModelAndView mav = new ModelAndView("error");

        mav.addObject("message", ex.getMessage());

        return mav;

    }

}

 

예시에서는 `MyCustomException` 발생 `handleMyCustomException` 메서드를 실행해 사용자에게 "error" 뷰를 보여주며 에러 메시지를 전달합니다.


 

2) @ControllerAdvice 어노테이션 사용

 

전역 예외 처리를 구현하려면 @ControllerAdvice 어노테이션을 사용하여 전체 애플리케이션에서 발생하는 예외를 곳에서 처리할 있습니다. 방법을 사용하면 여러 컨트롤러에서 중복되는 예외 처리 로직을 줄이고 일관된 처리를 제공할 있습니다.

 

전역 예외 처리 클래스를 @ControllerAdvice 어노테이션과 함께 사용한 예시는 다음과 같습니다.

@ControllerAdvice

public class GlobalExceptionHandler {

   

    @ExceptionHandler(MyCustomException.class)

    public ModelAndView handleMyCustomException(MyCustomException ex) {

        ModelAndView mav = new ModelAndView("error");

        mav.addObject("message", ex.getMessage());

        return mav;

    }

 

    @ExceptionHandler(Exception.class)

    public ModelAndView handleGlobalException(Exception ex) {

        ModelAndView mav = new ModelAndView("error");

        mav.addObject("message", "전역 예외 발생: " + ex.getMessage());

        return mav;

    }

}

 

예시에서는 `MyCustomException` 기타 모든 예외를 각각 전역으로 처리하는 메서드를 구현하고 있습니다.


 

3) 컨트롤러 클래스에서 예외 처리 로직 구현

 

컨트롤러 클래스에서 직접 예외 처리 로직을 구현하여 예외 처리를 있습니다. try-catch 문을 사용하여 예외가 발생하면 적절한 응답을 반환하는 방식으로 처리할 있습니다. 방법은 간단한 로직이나 디버깅 용도로 사용할 있습니다.

@GetMapping("/example")

public ResponseEntity<String> getResult() {

    try {

        // 비즈니스 로직 처리

        return ResponseEntity.ok("Success");

    } catch (MyCustomException e) {

        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("MyCustomException 발생: " + e.getMessage());

    } catch (Exception e) {

        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("예외 발생: " + e.getMessage());

    }

}

 

예시에서는 핸들러 메서드 내에서 try-catch 구문을 사용해 예외 처리를 수행하고 있습니다.

 

3. 요약

 

글에서는 스프링MVC에서 예외 처리 방법에 대해 상세하게 살펴보았습니다. 스프링MVC에서 예외 처리는 매우 중요한 부분으로 적절한 예외 처리를 통해 서비스의 품질과 사용자 경험을 향상시킬 있습니다.

 

 

 

예외 처리 방법은 상황에 따라 유연하게 선택할 있어야 하며, 그에 따른 긍정적인 효과 사용자 경험의 개선을 기대할 있습니다. 다양한 예외 처리 방법을 적용하면서 스프링MVC 애플리케이션 개발에 효과적인 결과를 얻기를 바랍니다.

728x90
반응형