首页 > 其他分享 >SpringMVC异常处理

SpringMVC异常处理

时间:2023-10-04 20:16:06浏览次数:36  
标签:SpringMVC import springframework 处理 modelAndView ModelAndView 异常 public

 

@ControllerAdvice
没有切点只有增强

1.全局统一异常处理类

 1 package com.cn.globalexpction;
 2 
 3 import org.springframework.ui.ModelMap;
 4 import org.springframework.web.bind.annotation.ControllerAdvice;
 5 import org.springframework.web.bind.annotation.ExceptionHandler;
 6 import org.springframework.web.servlet.ModelAndView;
 7 
 8 /**
 9  * @Author hxy
10  * @Description 全局统一异常处理类
11  * @Date 2023/9/15 10:11
12  * @Version 1.0
13  */
14 @ControllerAdvice//声明页面控制器增强类(处理Controller的所有异常)
15 public class GlobalExceptionHandle {
16     //@ExceptionHandler:声明该方法可以处理的异常类型
17     @ExceptionHandler({NameException.class})
18     public ModelAndView doNameException(Exception e){
19         System.out.println("-------doNameException--------");
20         ModelAndView modelAndView = new ModelAndView();
21         modelAndView.addObject("msg","用戶名错误异常");
22         modelAndView.addObject("e",e);
23         modelAndView.setViewName("error");
24         e.printStackTrace();
25         return modelAndView;
26     }
27 
28     @ExceptionHandler({PasswordException.class})
29     public ModelAndView doPasswordException(Exception e){
30         System.out.println("-------doPasswordException--------");
31         ModelAndView modelAndView = new ModelAndView();
32         modelAndView.addObject("msg","密码错误异常");
33         modelAndView.addObject("e",e);
34         modelAndView.setViewName("error");
35         e.printStackTrace();
36         return modelAndView;
37     }
38 
39     /**此方法用来处理任意异常(也就是上面两个方法不能处理的其他异常)
40      * @return {@link ModelAndView}
41      */
42     @ExceptionHandler
43     public ModelAndView doException(Exception e){
44         System.out.println("-----------doException----------");
45         ModelAndView modelAndView = new ModelAndView();
46         modelAndView.addObject("msg","系统异常");
47         modelAndView.addObject("e",e);
48         modelAndView.setViewName("error");
49         e.printStackTrace();
50         return modelAndView;
51     }
52 }

2.异常页面控制器

 1 package com.cn.globalexpction;
 2 
 3 import org.springframework.stereotype.Controller;
 4 import org.springframework.ui.ModelMap;
 5 import org.springframework.web.bind.annotation.RequestMapping;
 6 
 7 /**
 8  * @Author hxy
 9  * @Description 异常页面控制器
10  * @Date 2023/9/15 9:42
11  * @Version 1.0
12  */
13 @Controller
14 public class ExceptionController {
15     @RequestMapping("/exception.do")
16     public String exception(String name, String password, ModelMap modelMap)throws Exception{
17         //用户名判断
18         if (!"binge".equals(name)){
19             //抛出用户名错误异常
20             throw new NameException("用户名错误异常");
21         }
22         if (!"666".equals(password)){
23             //抛出密码错误异常
24             throw new PasswordException("密码错误异常");
25         }
26 //        int i=1/0;
27         modelMap.addAttribute("msg","用户名和密码正确");
28         return "result";
29     }
30 }

3.自定义异常

 1 package com.cn.globalexpction;
 2 
 3 /**
 4  * @Author hxy
 5  * @Description 自定义用户名异常
 6  * @Date 2023/9/15 9:46
 7  * @Version 1.0
 8  */
 9 public class NameException extends Exception{
10     public NameException(String message){
11         super(message);
12     }
13 }
 1 package com.cn.globalexpction;
 2 
 3 /**
 4  * @Author hxy
 5  * @Description 自定义密码错误异常
 6  * @Date 2023/9/15 9:48
 7  * @Version 1.0
 8  */
 9 public class PasswordException extends Exception{
10     public PasswordException(String message){
11         super(message);
12     }
13 }

 

标签:SpringMVC,import,springframework,处理,modelAndView,ModelAndView,异常,public
From: https://www.cnblogs.com/hxysg/p/17742650.html

相关文章

  • SpringMVC resultful架构风格
     <inputtype="hidden"name="_method"value="DELETE"/>  1.RestfulController.java 1packagecom.cn.restful;23importorg.springframework.stereotype.Controller;4importorg.springframework.ui.ModelMap;5......
  • ARM架构 CPU 处理器结构
     构成cpu的主要部件包括运算器、控制器、寄存器三个部件。 完整的CPU构架:ALU只负责计算,它的数可以从寄存器来,也可以从片外存储器来;数从哪儿来,做什么运算,是由指令解析产生的,逻辑控制单元来控制;逻辑控制单元的指令是在PC指针寄存器的指引下,从程序的地址空间拿进来逐条解析;在这......
  • 数字图像处理-杨淑莹(二)
    噪声消除法对于二值图像上的噪声消除二值图像黑白点噪声滤波消除孤立黑像素点邻域平均法​ 如果各点噪声是独立等分布的,经过这种方法平滑后,信噪比提高,但是图像的边缘细节会变得很模糊3*3均值滤波超限邻域平均法N*N均值滤波器选择式掩模平滑-选择式掩模平滑制作9种窗口......
  • flask统一异常捕获(作用:统一捕获指定的异常并返回)
    flask中可以使用装饰器errorhandler来对指定的异常、状态码等统一捕获并处理。对指定的状态码进行统一捕获@app.errorhandler(404)#参数e是异常的详细信息的对象,必须要有一个参数接收异常对象。defpagenotfound(e):#比如可以重定向到统一的404静态页面中。#不过......
  • flask自带的异常抛出函数abort
    flask中有一个abort函数,可以用于快捷的抛出异常,但是只能抛出标准的HTTP状态码,不能乱设置HTPP状态码,比如666、777这种。[email protected]("/user")defuser():abort(404)......
  • 手动开发-实现SpringMVC底层机制--小试牛刀
    在这里说的底层机制的实现主要是指:前端控制器、Controller、Service注入容器、对象自动装配、控制器方法获取参数、视图解析、返回json数据。前端控制器前端控制器就是核心控制器。在这里我们可以设计一个Servlet来充当核心控制器:LingDispatcherServlet.java.这个控制器的作用......
  • 微服务17:微服务治理之异常驱逐
    ★微服务系列微服务1:微服务及其演进史微服务2:微服务全景架构微服务3:微服务拆分策略微服务4:服务注册与发现微服务5:服务注册与发现(实践篇)微服务6:通信之网关微服务7:通信之RPC微服务8:通信之RPC实践篇(附源码)微服务9:服务治理来保证高可用微服务10:系统服务熔断、限流微服务11......
  • 以下是一个比较复杂的R语言代码示例: ```R # 生成随机数 set.seed(123) data <- rnorm
    以下是一个比较复杂的R语言代码示例:#生成随机数set.seed(123)data<-rnorm(1000)#数据处理和分析data_mean<-mean(data)data_sd<-sd(data)data_median<-median(data)#创建一个绘图窗口par(mfrow=c(2,2))#绘制直方图hist(data,main="HistogramofDat......
  • 数字信号处理-IIR滤波器
    1.IIR滤波器的设计步骤首先设计满足技术指标的模拟滤波器将模拟滤波器转换为数字滤波器2.如何设计模拟滤波器将任意的模拟滤波器指标转换为低通的模拟滤波器指标设计好低通滤波器(关键步骤)通过变换,将低通滤波器转换成任意的模拟滤波器低通模拟滤波器有三个模板:BW、CB、C......
  • ABAP 异常处理(Exception Handling) - 什么是 Non-Class-Based 异常试读版
    本教程前一篇文章,笔者介绍了ABAP系统里查看程序运行时错误的一个有用工具:事务码ST22:112.SAPABAPDumpAnalysis(ST22)工具的使用和背景介绍在笔者实际工作过程中,发现部分开发人员,对于运行时错误(RuntimeError)和异常(Exception)这些概念的区别,理解得不是很清楚,因此使......