广告
返回顶部
首页 > 资讯 > 精选 >使用SpringMVC怎么实现一个全局异常处理器
  • 360
分享到

使用SpringMVC怎么实现一个全局异常处理器

springmvc全局异常处理器 2023-05-31 10:05:48 360人浏览 独家记忆
摘要

本篇文章给大家分享的是有关使用springMVC怎么实现一个全局异常处理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先,创建一个自定义的异常类public cl

本篇文章给大家分享的是有关使用springMVC怎么实现一个全局异常处理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

首先,创建一个自定义的异常类

public class ExceptionCustom extends Exception{   private static final long serialVersionUID = 1L; private String message;  public String getMessage() {  return message; }  public void setMessage(String message) {  this.message = message; } public ExceptionCustom() {  super();  // TODO Auto-generated constructor stub } public ExceptionCustom(String message) {  super(message);  this.message = message; }}

创建一个全局异常处理器的类,让它实现HandlerExceptionResolver 接口。相信,基础好一点的同学可以看出来我代码的意思(注释)

import javax.servlet.Http.httpservletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.log4j.Logger;org.springframework.WEB.servlet.HandlerExceptionResolver;import org.springframework.web.servlet.ModelAndView;public class SimpleExceptionResolver implements HandlerExceptionResolver { // 异常对象 ExceptionCustom exceptionCustom = null; private Logger logger = Logger.getLogger(SimpleExceptionResolver.class   .getSimpleName());  public ModelAndView resolveException(HttpServletRequest request,   HttpServletResponse response, Object handler, Exception ex) {  //转化为自定义异常  exceptionCustom = (ExceptionCustom) ex;  //判断是否是本地异常  if (ex instanceof ExceptionCustom) {   logger.info(ex.getMessage());  } else {   …抛出错误  }  //获取异常信息  String message = exceptionCustom.getMessage();  ModelAndView mv = new ModelAndView();  //将异常返回到Model  mv.addObject("xx", message);  // 指向错误页面  mv.setViewName("error");  return null; }}

解释一下,在判断一个异常是否是其他异常的时候,先看它是否属于本地异常(Exception)的exceptionCustom ,如果是本地异常,则抛出本地异常信息

if (ex instanceof ExceptionCustom) {   logger.info(ex.getMessage());  } else {   …抛出错误  }

如果不是本地异常,则抛出未知异常

然后从异常里面获取异常信息,将异常信息返回到MV中,最后转至页面,当然严谨一点的,会将异常信息添加到数据库中,方便查看

由于本文章只是一个Demo,所以没有考虑到很多因素

下来,说说配置文件

配置文件,先贴上代码,然后再做解释

<!-- 全局异常处理器 --><bean id="handlerExceptionResolver" class = "xxxx(包名).SimpleExceptionResolver"/>

注意:首先,这个bean将配置在自己的web层.xml(spring-web.xml),当启动Tomcat,加载web.xml后需加载spring-web.xml

之前注入的bean的id我随便写了一个名称,然后spring解析的时候报错了,

之后看了源码的时候,才知道原来是这么回事

1Springmvc 在org.springframework.web.servlet.DispatcherServlet类中声明了public static final String HANDLER_EXCEPTION_RESOLVER_BEAN_NAME = "handlerExceptionResolver";
private void initHandlerExceptionResolvers(ApplicationContext context) {  this.handlerExceptionResolvers = null;  if (this.detectAllHandlerExceptionResolvers) {   // Find all HandlerExceptionResolvers in the ApplicationContext, including ancestor contexts.   Map<String, HandlerExceptionResolver> matchingBeans = BeanFactoryUtils     .beansOfTypeIncludingAncestors(context, HandlerExceptionResolver.class, true, false);   if (!matchingBeans.isEmpty()) {    this.handlerExceptionResolvers = new ArrayList<HandlerExceptionResolver>(matchingBeans.values());    // We keep HandlerExceptionResolvers in sorted order.    OrderComparator.sort(this.handlerExceptionResolvers);   }  }  else {   try {    HandlerExceptionResolver her =      context.getBean(HANDLER_EXCEPTION_RESOLVER_BEAN_NAME, HandlerExceptionResolver.class);    this.handlerExceptionResolvers = Collections.singletonList(her);   }   catch (NoSuchBeanDefinitionException ex) {    // Ignore, no HandlerExceptionResolver is fine too.   }  }

看完这段代码的同学应该就知道为什么把bean 的id 设置成handlerExceptionResolver了吧

HandlerExceptionResolver her =context.getBean(HANDLER_EXCEPTION_RESOLVER_BEAN_NAME, HandlerExceptionResolver.class);

所以说,全局异常处理器的bean的id不能随便的设置。

以上就是使用SpringMVC怎么实现一个全局异常处理器,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 使用SpringMVC怎么实现一个全局异常处理器

本文链接: https://www.lsjlt.com/news/224740.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用SpringMVC怎么实现一个全局异常处理器
    本篇文章给大家分享的是有关使用SpringMVC怎么实现一个全局异常处理器,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先,创建一个自定义的异常类public cl...
    99+
    2023-05-31
    springmvc 全局异常处理器
  • SpringMvc异常处理器怎么实现
    这篇文章主要讲解了“SpringMvc异常处理器怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringMvc异常处理器怎么实现”吧! Spri...
    99+
    2022-10-19
  • go怎么实现全局异常处理
    要实现Go语言的全局异常处理,可以使用defer和recover来捕获和处理panic异常。 在Go语言中,defer语句会在函数结...
    99+
    2023-10-20
    go
  • 使用aop实现全局异常处理
    本文实例为大家分享了使用aop实现全局异常处理的具体代码,供大家参考,具体内容如下 日常业务中存在的问题 使用大量的try/catch来捕获异常导致整个控制层代码可读性极差,并且此类...
    99+
    2022-11-13
  • SpringBoot怎么配置全局异常处理器捕获异常
    本篇内容主要讲解“SpringBoot怎么配置全局异常处理器捕获异常”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot怎么配置全局异常处理器捕获异常”吧!1.前言任何系统,我们不...
    99+
    2023-07-05
  • SpringBoot统一接口返回及全局异常怎么处理
    今天小编给大家分享一下SpringBoot统一接口返回及全局异常怎么处理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、S...
    99+
    2023-07-06
  • 如何使用Django与DRF实现全局异常处理方案
    小编给大家分享一下如何使用Django与DRF实现全局异常处理方案,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现的目标如果没有 DRF,我们只需要在 Djan...
    99+
    2023-06-29
  • SpringMVC基于配置的异常处理器怎么用
    这篇文章主要介绍了SpringMVC基于配置的异常处理器怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringMVC基于配置的异常处理器怎么用文章都会有所收获,下面我们一起来看看吧。一、基于配置的异常...
    99+
    2023-06-30
  • .NET6开发TodoList应用之实现全局异常处理
    目录需求目标原理和思路实现验证总结参考资料需求 因为在项目中,会有各种各样的领域异常或系统异常被抛出来,那么在Controller里就需要进行完整的try-catch捕获,并根据是否...
    99+
    2022-11-12
  • Spring Boot全局异常处理器(原理及使用详解)
    目录 1 什么是全局异常处理器 2 为什么需要全局异常 3 原理和目标 4 @ControllerAdvice注解 4.1 Advice(通知) 4.2 @ControllerAdvice结合方法型注解@ExceptionHandler,...
    99+
    2023-08-31
    spring boot spring java
  • 使用springmvc怎么实现一个限流拦截器
    这期内容当中小编将会给大家带来有关使用springmvc怎么实现一个限流拦截器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。限流器算法目前常用限流器算法为两种:令牌桶算法和漏桶算法,主要区别在于:漏桶算法...
    99+
    2023-05-30
    springmvc
  • NetCore实现全局模型绑定异常信息统一处理(场景分析)
    本文主要讲解NetCore如何使用中间件捕获模型绑定的异常信息 场景 在.NET Core 中请求中,如果参数的类型错误,我们在控制器中定义的方法是不会执行的,当我们需要捕获模型绑...
    99+
    2022-11-12
  • .NET 6开发TodoList应用中如何实现全局异常处理
    本篇文章为大家展示了.NET 6开发TodoList应用中如何实现全局异常处理,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。需求因为在项目中,会有各种各样的领域异常或系统异常被抛出来,那么...
    99+
    2023-06-22
  • vue-cli 3中怎么实现一个全局过滤器
    vue-cli 3中怎么实现一个全局过滤器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、创建 filters.js首先新建一个filter...
    99+
    2022-10-19
  • C++编译器怎么实现异常处理
    这篇文章主要介绍“C++编译器怎么实现异常处理”,在日常操作中,相信很多人在C++编译器怎么实现异常处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++编译器怎么实现异常处理”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-17
  • 使用Spring MVC实现统一异常处理的方法
    这篇文章将为大家详细讲解有关使用Spring MVC实现统一异常处理的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业...
    99+
    2023-05-31
    springmvc 异常处理
  • 怎么在Android应用中实现一个全局返回功能
    这篇文章给大家介绍怎么在Android应用中实现一个全局返回功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。思路废话不多说了,说说主要的思路吧,关键的一个类就是:AccessibilityService,官方文档地址...
    99+
    2023-05-31
    android roi
  • 使用css怎么实现一个n宫格布局
    使用css怎么实现一个n宫格布局?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。设计目标在scss环境下, 通过mixin实现n宫格, 并且可以支持"有无边框"...
    99+
    2023-06-08
  • 使用CSS3怎么实现一个瀑布流布局
    使用CSS3怎么实现一个瀑布流布局?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。掌握点:column-count 把div中的文本分为多少列column-width 规定列宽c...
    99+
    2023-06-08
  • 在SpringMVC中使用 jquery.uploadify怎么实现一个文件上传功能
    在SpringMVC中使用 jquery.uploadify怎么实现一个文件上传功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。项目结构普通表单上传<form ac...
    99+
    2023-05-31
    springmvc jquery.uploadify fy
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作