В процессе разработки системы, обработка исключений является неизбежной, если исключение не обрабатывается должным образом, приведет к плохому пользовательскому опыту, эта статья объясняет SpringMVC в процессе разработки, пункт обработка исключений знания, только научиться делиться, например, неадекватными, пожалуйста, поправьте меня.
очертание
В SpringMVC, манипуляционный Там исключение несколько способов, эта статья в основном по двум сценариям:
- Аномальные для захвата получены и обработаны @ExceptionHandler.
- Процесс возвращается, чтобы настроить содержание, @ResponseStatus коды состояния аннотаций.
По @ExceptionHandler процедуры
1. пользовательский класс исключения, который наследует от класса Exception
Как следует: @ExceptionHandler отмечен на методе, этот метод может быть использован для представления обработки исключений, если несколько исключений должны быть захвачены, а затем через запятую.
Если вам нужно перехватывать исключения других классов, нам нужно увеличить @ControllerAdvice аннотацию на классе.
1 пакет com.hex.third; 2 3 импорта 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 МАВ = новый новый ModelAndView (); 27 mav.setViewName ( "ошибка" ); 28 mav.addObject ( "Exce" , ех); 29 Возвращение MAV; 30 } 31 }
2. Принимая во внимание метод, математика выброшено исключение, вы можете захватить и отобразить страницу ошибки
1 пакет com.hex.third; 2 3 импорта 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 * @return 14 * / 15 @RequestMapping ( "/ helloexce2") 16 общественных ModelAndView HelloExce2 () { 17 попытка { 18 INT = 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 расширений с Exception { 14 15 }
2. Определить метод Метательного
Как следует:
1 / ** 2 *测试第三个异常 3 * @return 4 * @throws MyArrayOutofBoundsException 5 * / 6 @RequestMapping ( "/ helloexce3" ) 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 два способа обработки исключений, не могут существовать.
О аномалии анализа классифицируют следующим образом: при использовании, может быть больше исследований.
замечание
Будь львом или газелью, чтобы работать, будь то богатый или бедный, должны бороться.