一起学SpringMVC之异常处理
发布时间:2020-12-15 01:17:12 所属栏目:大数据 来源:网络整理
导读:在系统开发过程中,异常处理是不可避免,如果异常处理不好,会给用户造成很差的体验,本文主要讲解在SpringMVC开发过程中,异常处理的相关知识点,仅供学习分享使用,如有不足之处,还请指正。 概述 在SpringMvc中,处理异常有好几种方法,本文主要讲解两种
在系统开发过程中,异常处理是不可避免,如果异常处理不好,会给用户造成很差的体验,本文主要讲解在SpringMVC开发过程中,异常处理的相关知识点,仅供学习分享使用,如有不足之处,还请指正。 概述在SpringMvc中,处理异常有好几种方法,本文主要讲解两种方案:
通过@ExceptionHandler操作步骤1. 自定义一个异常类,继承自Exception类如下所示:@ExceptionHandler标注在方法上,表示此方法可以用来处理异常,如果有多个异常需要捕获,则用逗号隔开。 如果需要捕获其他类的异常,则需要在类上增加@ControllerAdvice注解。 1 package com.hex.third; 2 3 import org.springframework.web.bind.annotation.ControllerAdvice; 4 org.springframework.web.bind.annotation.ExceptionHandler; 5 org.springframework.web.servlet.ModelAndView; 6 7 /** 8 * 自定义异常 9 * @author Administrator 10 * 11 */ 12 13 @ControllerAdvice 14 public class MyException extends Exception { 15 16 17 * 该方法可以捕获本类中抛出的ArithmeticException异常,可以支持多个异常 18 * @param ex 要捕获的一样,此方法必须只有一个参数,如果有其他类型的参数,则会报错 19 @return 20 21 @ExceptionHandler({ArithmeticException.class,ArrayIndexOutOfBoundsException.class}) 22 public ModelAndView handlerException(Exception ex){ 23 //将ex信息在后台输出 24 System.out.println(ex.getMessage()); 25 将错误信息显示在前台 26 ModelAndView mav=new ModelAndView(); 27 mav.setViewName("error"); 28 mav.addObject("exce",ex); 29 return mav; 30 } 31 } 2. 定一个方法,抛出一个数学异常,则可以进行捕获,并显示到错误页面org.springframework.stereotype.Controller; org.springframework.web.bind.annotation.RequestMapping; 6 7 @Controller Exce2Controller { 10 11 12 * 抛出一个异常 14 15 @RequestMapping("/helloexce2") ModelAndView HelloExce2(){ 17 try{ 18 int i=1/0 ; 19 }catch(ArithmeticException ex){ 20 throw ex; 21 } 22 ModelAndView mav=23 mav.addObject("helloexce","hello exception"24 mav.setViewName("success"26 27 } 3. 运行测试输出错误页面,如下所示: 通过@ResponseStatus,返回错误信息,操作步骤1. 自定义一个异常类,并增加@ResponseStatus注解如下所示:value表示状态码,是枚举类型,reason显示状态信息 org.springframework.http.HttpStatus; org.springframework.web.bind.annotation.ResponseStatus; 5 * 自定义异常类 * @ResponseStatus即可以表示在类前面,也可以表识在方法前面 12 @ResponseStatus(value=HttpStatus.FORBIDDEN,reason="页面禁止访问22222"class MyArrayOutofBoundsException 14 15 } 2. 定义一个方法抛出该异常如下所示: 2 * 测试第三个异常 @throws MyArrayOutofBoundsException 5 6 @RequestMapping("/helloexce3" 7 public ModelAndView HelloExce3() throws MyArrayOutofBoundsException{ 8 if(true){ 9 throw MyArrayOutofBoundsException(); 11 ModelAndView mav=12 mav.addObject("helloexce",1)">13 mav.setViewName("success"14 15 } 3. 运行测试如下所示:Message即为自定义信息 ? 4. 注意:@ExceptionHandler和@ResponseStatus这两种处理异常的方法,不可以同时存在。关于异常解析的分类,如下所示:用到的时候,可以多研究一下。 备注?不论是狮子还是羚羊,都要奔跑;不论是贫穷还是富有,都要奋斗。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |