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页面,并输出错误信息:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

往事不堪回首..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值