spring boot 异常拦截器全局友提示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring boot 异常拦截器全局友提示相关的知识,希望对你有一定的参考价值。

参考技术A  1. 添加config 配置类

package org.fh.config;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.context.annotation.Configuration;

import org.springframework.web.servlet.HandlerExceptionResolver;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.view.json.MappingJackson2JsonView;

/**

* 说明:错误异常拦截处理

* from fhadmin.cn

*/

@Configuration

public class ExceptionConfiguration implements HandlerExceptionResolver

@Override

public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler,

Exception ex)

ModelAndView mv = new ModelAndView(new MappingJackson2JsonView()); //返回json

String exInfo = ex.toString().replaceAll("\n", "<br/>");

boolean status = exInfo.contains("Subject does not have permission");

if(status)

exInfo = "[没有此页面的访问权限]" + exInfo;

        else

        System.out.println("==============异常开始=============");

    ex.printStackTrace();

    System.out.println("==============异常结束=============");

       

mv.addObject("exception", exInfo);

mv.addObject("result", "exception");

return mv;





2.  在逻辑类的方法上抛出异常 throws Exception,比如  

/**删除

* @param out

* @throws Exception

*/

@RequestMapping(value="/delete")

@RequiresPermissions("autograph:del")

@ResponseBody

public Object delete() throws Exception

Map<String,String> map = new HashMap<String,String>();

String errInfo = "success";

//xxxx

map.put("result", errInfo); //返回结果

return map;



3. 前端页面接收异常结果

            //发送 post 请求提交保存

            $.ajax(

            xhrFields:

                    withCredentials: true

                ,

type: "POST",

url: httpurl+'xxxx/delete',

    data: tm:new Date().getTime(),

dataType:"json",

success: function(data)

                        if("success" == data.result)

                        else if ("exception" == data.result)

                        alert("模块异常"+data.exception);//显示异常

                       

                   

);           

spring的全局自定义异常案例「完美拦截Controller层全部异常」





spring异常拦截

背景

在springmvc的controller中程序员经常要封装错误对象返回给前端,前端好显示错误文案。通过spring的异常处理器,可以彻底干净的消灭异常对象的样板代码,设计思路非常好。

学习目标

  • 学习全局异常拦截器处理controller所有异常的返回封装

  • 定义枚举异常码,优雅的设计自定义异常

经典案例

--------------创建枚举异常码,系统所有异常情况在这里定义就是--------------------异常码

-------------------程序员,在系统中定义一个异常就够了,通过异常码区分具体异常,这种方式非常优雅--------------

spring的全局自定义异常案例「完美拦截Controller层全部异常」

自定义异常

具体异常拦截逻辑,代码非常简单,学习下这种设计思路,优雅减少项目样板代码

  1. 通过异常instanceof判断出自定义异常,

  2. 然后取出异常码,通过json方式返回给前端

还有个配置

spring的全局自定义异常案例「完美拦截Controller层全部异常」

异常处理器

具体拦截逻辑,程序员们注意了------

spring的全局自定义异常案例「完美拦截Controller层全部异常」

拦截器实现

------软件开发设计demo----------------

spring的全局自定义异常案例「完美拦截Controller层全部异常」

controller

--------测试效果---------程序员--------------

spring的全局自定义异常案例「完美拦截Controller层全部异常」

000

001


程序汪往期精彩文章包含答案



   (面试题目录推荐)








3.

4.

5    (大目录列)

      
        
        
      
给个[在看],是对程序汪最大的支持




以上是关于spring boot 异常拦截器全局友提示的主要内容,如果未能解决你的问题,请参考以下文章

如何在 spring-boot 中拦截嵌入式 Tomcat 上的“全局”404

Spring Boot2 系列教程 (十四) | 统一异常处理

Spring Boot 统一功能处理(用户登录权限效验-拦截器异常处理数据格式返回)

Spring-全局异常拦截

Spring 全局拦截SQL异常

spring的全局自定义异常案例「完美拦截Controller层全部异常」