함께 예외 처리의 SpringMVC 알아보기

예외가 가난한 사용자 경험을 초래할 것, 제대로 처리되지 않는 경우 시스템의 개발 과정에서 예외 처리가 불가피,이 논문은 개발 과정에서 SpringMVC를 설명하고, 지식 포인트 예외 처리 만 같은 공유하는 법을 배워야합니다 부적절한 나 수정하시기 바랍니다.

개요

SpringMvc에서이 예외 처리는 여러 가지 방법이 있습니다, 주로 두 가지 시나리오에서이 논문 :

  1. 이상이 수신 @ExceptionHandler 처리 캡처한다.
  2. 이 과정은 @ResponseStatus 상태 코드 주석하여 콘텐츠를 사용자 정의로 돌아갑니다.

@ExceptionHandler 절차에 의해

1. Exception 클래스에서 상속 사용자 정의 예외 클래스

다음과 같이 @ExceptionHandler 메소드에 표시된 여러 예외가 포착 될 필요가 있다면, 이러한 방법은 예외 처리를 나타내는 데 사용될 수 있고, 다음 쉼표로 구분.

당신이 예외를 다른 클래스를 잡을 필요가 있다면, 우리는 클래스에 @ControllerAdvice 주석을 늘려야합니다.

1 개  패키지 com.hex.third;
2  
 수입 org.springframework.web.bind.annotation.ControllerAdvice;
4  수입 org.springframework.web.bind.annotation.ExceptionHandler;
5  수입 org.springframework.web.servlet.ModelAndView;
6  
7  / ** 
8  *自定义异常
 9  *의 @author의 관리자
 10  *
 11   * / 
12  
13  @ControllerAdvice
 14  공용  클래스 MyException이 연장 예외 {
 15      
16      / ** 
17      *이 방법은 여러 이상을 지원할 수있는 예외 발생이 클래스 arithmeticexception이 캡처 할 수 있습니다
 (18)       * @param를 예를 캡처 할로를,이 방법은 매개 변수의 다른 유형이있는 경우,이 오류가 발생하지, 단 하나 개의 인수가 있어야합니다
 19       * @return을 
20은       * / 
21 인      @ExceptionHandler ({않고 ArithmeticException. 클래스 ,는 ArrayIndexOutOfBoundsException. 클래스 , MyArrayOutofBoundsException. 클래스 })
 (22)가      공공 의 ModelAndView handlerException (예외 예) {
 23이다          // 백그라운드 정보 출력 예 
24          (에서 System.out.println (ex.getMessage ));
 25          // 전경 표시 오차 정보 
(26)는          의 ModelAndView MAV =는 새로운 새 ()의 ModelAndView;
27          mav.setViewName ( "오류" );
28          mav.addObject ( "exce" , 예);
29          리턴 MAV;
30      }
 31 }

수학 예외가 발생하는 방법을 감안할 때 2. 캡처하고 오류 페이지를 표시 할 수 있습니다

1 개  패키지 com.hex.third;
2  
 수입 org.springframework.stereotype.Controller;
4  수입 org.springframework.web.bind.annotation.ControllerAdvice;
5  수입 org.springframework.web.bind.annotation.RequestMapping;
6  수입 org.springframework.web.servlet.ModelAndView;
7  
8  @Controller
 9  공용  클래스 Exce2Controller {
 10  
11      / ** 
12       *抛出一个异常
 13       * @ 반환 
14       * / 
15      @RequestMapping ( "/ helloexce2")
 16      공개 의 ModelAndView HelloExce2 () {
 17          시도 {
 18              INT의 I = 1 / 0 ;
19          } 캐치 (arithmeticexception이 예) {
 20              던져 예;
21          }
 22          의 ModelAndView MAV = 의 ModelAndView ();
23          mav.addObject ( "helloexce", "안녕하세요 예외" );
24          mav.setViewName ( "성공" );
25          리턴 MAV;
26      }
 27 }

3. 테스트를 실행

출력 오류 페이지로는 다음과 같습니다 :

@ResponseStatus함으로써, 오류 메시지의 단계를 반환

1. 사용자 정의 예외 클래스 및 @ResponseStatus 주석을 추가합니다

다음과 같이 값이 상태 코드를 보여준다 열거 타입 이성 표시 상태 정보는

. (1)  패키지 com.hex.third;
 2  
. 3  가져 org.springframework.http.HttpStatus]
 . (4)  수입 org.springframework.web.bind.annotation.ResponseStatus]
 . 5  
. 6  / ** 
. 7  * 지정 예외 클래스
 8.  * @author의 관리자
 9.  * @ResponseStatus 클래스 앞의 테이블은 이전에있어서 식별 할 수있는 하나 표현 될 수있다
 (10)  *이
 . 11   * / 
12 인 @ResponseStatus (값 = HttpStatus.FORBIDDEN는 이유 = "금지 페이지 22222" )
 (13)는  공용  클래스 MyArrayOutofBoundsException (가) 확장 예외 {
 14  
(15) }

2. 슬로우 방법을 정의

다음과 같습니다 :

1  / ** 
2       *测试第三个异常
 3       * @return 
4       * @throws MyArrayOutofBoundsException
 5       * / 
6      ( "/ helloexce3"@RequestMapping )
 7      공공 의 ModelAndView HelloExce3 ()가 발생 MyArrayOutofBoundsException {
 8          경우, ( ) {
 9          스로인  새로운 MyArrayOutofBoundsException ();
10          }
 11          의 ModelAndView MAV = 의 ModelAndView ();
12          mav.addObject ( "helloexce", "안녕하세요 예외");
13          mav.setViewName ( "성공" );
(14)          반환 MAV;
15      }

3. 테스트를 실행

다음과 같이 메시지는 사용자 정보입니다

 

4. 참고 : @ExceptionHandler 및 @ResponseStatus 두 가지 방법이 존재하지 않을 수 있습니다, 예외를 처리합니다.

사용하는 경우, 더 많은 연구가 될 수있다 : 약 이상 다음과 같이 분석 분류.

 부자 나 가난한 여부, 투쟁해야 사자 또는 가젤이든, 실행합니다.

추천

출처www.cnblogs.com/hsiang/p/11605221.html