java全局捕捉异常并返回统一返回值

这篇具有很好参考价值的文章主要介绍了java全局捕捉异常并返回统一返回值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 首先定义全局异常处理类


import org.springframework.validation.BindException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.net.ConnectException;


@ControllerAdvice
public class GlobalExceptionHandler {

    //@ExceptionHandler(BindException.class)
   //多个异常用逗号分隔
    @ExceptionHandler({  
            NoHandlerFoundException.class,
            HttpRequestMethodNotSupportedException.class,
            HttpMediaTypeNotSupportedException.class,
            MissingPathVariableException.class,
    })
    @ResponseBody
    public ModelAndView handleBindException(BindException e, HttpServletRequest request) {
        request.setAttribute("errMsg", e.getFieldError().getDefaultMessage()); //需求时间初始化为当前日期
        return new ModelAndView("Error");
    }

    @ExceptionHandler(ConnectException.class) //连接超时
    @ResponseBody
    public ModelAndView handleException(Exception e, HttpServletRequest request) {
        request.setAttribute("errMsg", "系统繁忙,请稍后再试"); //需求时间初始化为当前日期
        return new ModelAndView("Error");
    }

    @ExceptionHandler(IllegalStateException.class) //子模块还未启动成功
    @ResponseBody
    public ModelAndView handleIllegalStateException(Exception e, HttpServletRequest request) {
        request.setAttribute("errMsg", "子模块还未启动成功,请稍后再试"); //需求时间初始化为当前日期
        return new ModelAndView("Error");
    }
}

2. 当全局有接口返回已经定义的全局捕捉的异常,就会调用上面的接口统一返回信息

3. 统一返回错误页面 Error.html

<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<TITLE>错误页面</TITLE>
</HEAD>

<BODY>  
<div id="errorBox">
    <ul>
    	<li><img src="/css/img/error.png"></li>
    	<li class="msg"><p id="errMsg" th:text="'错误提示:'+ ${errMsg}" /></li>
    </ul>
</div> 
</BODY>

</HTML>

当前端访问/getJobList接口时如果微服务的其他模块还未启动IllegalStateException异常就会被拦截从而重定向到Error页面,并输出错误信息:

java全局捕捉异常并返回统一返回值,java,开发语言文章来源地址https://www.toymoban.com/news/detail-654500.html

到了这里,关于java全局捕捉异常并返回统一返回值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot统一异常处理和统一返回格式

    上篇博客我们讲解了使用AOP来进行统一的用户登录判断,其实像这种功能统一且使用较多的地方,都可以用AOP来处理,除了统⼀的⽤户登录判断之外,AOP 还可以实现: 统⼀⽇志记录 统⼀⽅法执⾏时间统计 (在性能优化阶段,监控流量,接口的响应时间等甚至每个方法的响应

    2024年02月15日
    浏览(34)
  • Spring Boot 统一功能处理(拦截器实现用户登录权限的统一校验、统一异常返回、统一数据格式返回)

    目录 1. 用户登录权限校验 1.1 最初用户登录权限效验 1.2 Spring AOP 用户统⼀登录验证 1.3 Spring 拦截器 (1)创建自定义拦截器 (2)将自定义拦截器添加到系统配置中,并设置拦截的规则 1.4 练习:登录拦截器 (1)实现 UserController 实体类 (2)返回的登录页面:login.html (3)实

    2024年02月12日
    浏览(48)
  • Spring Boot 优雅实现统一数据返回格式+统一异常处理+统一日志处理

            在我们的项目开发中,我们都会对数据返回格式进行统一的处理,这样可以方便前端人员取数据,当然除了正常流程的数据返回格式需要统一以外,我们也需要对异常的情况进行统一的处理,以及项目必备的日志。         在项目开发中返回的是json格式的数据

    2024年01月19日
    浏览(42)
  • SpringBoot统一收集异常信息并返回给前端

    目录 适用场景 实现方法 结合Servlet对象 @RestControllerAdvice 通常前后端交互时,后端对前端参数进行校验后,对于校验不通过的信息会自定义一个异常抛出,但是后端一旦抛出异常,后台接口服务就会报500的错误 对于有些逻辑错误而言,我们只是想将此信息提示给用户,这时候

    2023年04月08日
    浏览(38)
  • 【Spring Boot】拦截器与统一功能处理:统一登录验证、统一异常处理与统一数据返回格式

     Spring AOP是一个基于面向切面编程的框架,用于将横切性关注点(如日志记录、事务管理)与业务逻辑分离,通过代理对象将这些关注点织入到目标对象的方法执行前后、抛出异常或返回结果时等特定位置执行,从而提高程序的可复用性、可维护性和灵活性。但使用原生Sp

    2024年02月16日
    浏览(45)
  • 微服务时代java异常捕捉

    ​反例:​ try{   // do what you want   }catch(Exception e){   e.printStackTrace(); } ​ 正例:​ try{   // do what you want   }catch(Exception e){   log.info(\\\"你的程序有异常啦,{}\\\",e); } ​ 理由:​ printStackTrace()打印出的堆栈日志跟业务代码日志是交错混合在一起的,排查异常日志不太方便。 e.printS

    2024年02月11日
    浏览(54)
  • 【规范】SpringBoot接口返回结果及异常统一处理,这样封装才优雅

    博友的需求就是我最大的动力 博友一说话,本狗笑哈哈。 博友要我写啥,我就写啥 。 特来一篇关于 SpringBoot接口返回结果及异常统一处理 ,虽说封不封装都能用,但咱后端也得给前端小姐姐留个好印象不是。项目前后端分离, 规范的数据传输格式,让REST风格的API具有简单

    2024年02月08日
    浏览(42)
  • 【Spring Boot统一功能处理】统一异常处理,统一的返回格式,@ControllerAdvice简单分析,即将走进SSM项目的大门! ! !

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们已经学习了一些统一功能处理的相关知识,今天我们继续深入学习这些知识,主要学习统一异常处理,统一的返回格式,@ControllerAdvice简单分析.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生

    2024年02月16日
    浏览(39)
  • 一站式统一返回值封装、异常处理、异常错误码解决方案—最强的Sping Boot接口优雅响应处理器

    作者:京东物流 覃玉杰 Graceful Response是一个Spring Boot体系下的优雅响应处理器,提供一站式统一返回值封装、异常处理、异常错误码等功能。 使用Graceful Response进行web接口开发不仅可以节省大量的时间,还可以提高代码质量,使代码逻辑更清晰。 强烈推荐你花3分钟学会它!

    2024年02月03日
    浏览(53)
  • uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -全局异常统一处理实现

    锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2+vue3.2+element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibili uniapp微信小程序投票系统实战课程 (SpringBoot2+vue3.2+element plus ) ( 火爆连载更新中... )共计21条视频,包括:uniapp微信小程序投票系统实

    2024年02月03日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包