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所有异常的返回封装
定义枚举异常码,优雅的设计自定义异常
经典案例
--------------创建枚举异常码,系统所有异常情况在这里定义就是--------------------异常码
-------------------程序员,在系统中定义一个异常就够了,通过异常码区分具体异常,这种方式非常优雅--------------
自定义异常
具体异常拦截逻辑,代码非常简单,学习下这种设计思路,优雅减少项目样板代码
通过异常instanceof判断出自定义异常,
然后取出异常码,通过json方式返回给前端
还有个配置
异常处理器
具体拦截逻辑,程序员们注意了------
拦截器实现
------软件开发设计demo----------------
controller
--------测试效果---------程序员--------------
000
001
程序汪往期精彩文章包含答案
(面试题目录推荐)
3.
4.
5 (大目录列)
给个[在看],是对程序汪最大的支持
以上是关于spring boot 异常拦截器全局友提示的主要内容,如果未能解决你的问题,请参考以下文章
如何在 spring-boot 中拦截嵌入式 Tomcat 上的“全局”404
Spring Boot2 系列教程 (十四) | 统一异常处理