예외가 가난한 사용자 경험을 초래할 것, 제대로 처리되지 않는 경우 시스템의 개발 과정에서 예외 처리가 불가피,이 논문은 개발 과정에서 SpringMVC를 설명하고, 지식 포인트 예외 처리 만 같은 공유하는 법을 배워야합니다 부적절한 나 수정하시기 바랍니다.
개요
SpringMvc에서이 예외 처리는 여러 가지 방법이 있습니다, 주로 두 가지 시나리오에서이 논문 :
- 이상이 수신 @ExceptionHandler 처리 캡처한다.
- 이 과정은 @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 두 가지 방법이 존재하지 않을 수 있습니다, 예외를 처리합니다.
사용하는 경우, 더 많은 연구가 될 수있다 : 약 이상 다음과 같이 분석 분류.
말
부자 나 가난한 여부, 투쟁해야 사자 또는 가젤이든, 실행합니다.