加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

一起学SpringMVC之异常处理

发布时间:2020-12-15 01:17:12 所属栏目:大数据 来源:网络整理
导读:在系统开发过程中,异常处理是不可避免,如果异常处理不好,会给用户造成很差的体验,本文主要讲解在SpringMVC开发过程中,异常处理的相关知识点,仅供学习分享使用,如有不足之处,还请指正。 概述 在SpringMvc中,处理异常有好几种方法,本文主要讲解两种

在系统开发过程中,异常处理是不可避免,如果异常处理不好,会给用户造成很差的体验,本文主要讲解在SpringMVC开发过程中,异常处理的相关知识点,仅供学习分享使用,如有不足之处,还请指正。

概述

在SpringMvc中,处理异常有好几种方法,本文主要讲解两种方案:

  1. 通过@ExceptionHandler来进行异常的捕获接收并处理。
  2. 通过@ResponseStatus注解来进行返回状态码内容的自定义处理。

通过@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这两种处理异常的方法,不可以同时存在。

关于异常解析的分类,如下所示:用到的时候,可以多研究一下。

备注

?不论是狮子还是羚羊,都要奔跑;不论是贫穷还是富有,都要奋斗。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读