springboot 全局异常处理类
目录标题
- springboot 全局异常处理类
- 依赖
- 代码
springboot 全局异常处理类
依赖
<!-- Spring Boot Web 依赖 核心 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
1、自定义一个 GlobalExceptionHandler 作为处理全局异常的处理类
2、类上加上 @ControllerAdvice 注解
3、在方法级别 加上 @ExceptionHandler 注解 与需要处理的类型
本类中有一个 运行时异常,还有一个 权限拦截异常
代码
package com.huayi.minprogramdemo.interceptor;import com.huayi.minprogramdemo.utils.Res;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.web.server.ConfigurableWebServerFactory;
import org.springframework.boot.web.server.ErrorPage;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.AccessDeniedException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;import javax.servlet.http.HttpServletRequest;/*** @program: minprogram-demo* @description: 全局异常处理类* @author: Long Ao Tian* @create: 2020-02-13 14:17**/
@ControllerAdvice //拦截所有requestMapping
public class GlobalExceptionHandler {private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);/*** 处理自定义的业务异常,没有权限** @param request* @param e* @return*/
// @ResponseStatus(value = HttpStatus.FORBIDDEN)@ExceptionHandler(value = AccessDeniedException.class)@ResponseBodypublic Object AccessExceptionHandler(HttpServletRequest request, AccessDeniedException e) {logger.error("发生业务异常!原因是:{},\n 具体错误在 {}", e, e.getStackTrace()[0] + "" + e.getStackTrace()[1]);return Res.error(403, "没有权限访问");}/*** 运行时异常的** @param request* @param e* @return*/@ExceptionHandler(value = RuntimeException.class)@ResponseBodypublic Object defaultErrorHandler(HttpServletRequest request, RuntimeException e) {// [0]logger.error("发现运行时业务异常!原因是:{},\n 具体错误在 {}", e, e.getStackTrace()[0] + "" + e.getStackTrace()[1]);return Res.error();}/*** 404 异常** @return*/@Beanpublic WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer() {return (factory -> {ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");factory.addErrorPages(error404Page);});}}
springboot 全局异常处理类相关推荐
- springboot定义全局异常处理类GlobalExceptionHandler
全局异常处理:GlobalExceptionHandler 定义全局异常处理类 以下为扩展部分 返回参数封装 引用示例 定义全局异常处理类 注意:如果需要返回页面,则要删掉@ResponseBody注 ...
- SpringBoot 全局异常处理
下面首先来观察一个程序代码,例如:现在建立一个控制器,而后这个控制器自己抛出一个异常.@Controller public class MemberController extends Abstrac ...
- springboot全局异常处理_SpringBoot:如何优雅地处理全局异常
之前用springboot的时候,只知道捕获异常使用try{}catch,一个接口一个try{}catch,这也是大多数开发人员异常处理的常用方式,虽然屡试不爽,但会造成一个问题,就是一个Contro ...
- SpringBoot全局异常处理
1.为什么要全局异常处理 在实际开发中,如果不处理统一处理异常,那么前端在调用后端提供的接口,就会处理各种的异常结构,对于前端来说那可谓是一场灾难,这对前后端的协作也不友好.比如后端路径:/api/v ...
- springboot统一异常处理类及注解参数为数组的写法
springboot统一异常处理类及注解参数为数组的写法 参考文章: (1)springboot统一异常处理类及注解参数为数组的写法 (2)https://www.cnblogs.com/zhucww ...
- SpringBoot全局异常处理及前端请求参数校验
SpringBoot全局异常捕获处理及参数校验 文章目录 SpringBoot全局异常捕获处理及参数校验 为什么要用全局异常处理? 如何进行全局异常捕获和处理? 统一结果封装 统一返回结果 枚举类 使 ...
- springBoot 全局异常处理 报错 : Could not resolve method parameter at index 0 in public .....
在学习 springboot 的全局异常处理时 ,我写了一个处理异常类 @ControllerAdvice public class ErrorCatchController {@Exceptio ...
- [SpringBoot]全局异常处理
2019独角兽企业重金招聘Python工程师标准>>> 1. 全局异常处理 2. SpringBoot错误处理原理 3. SpringBoot定制错误页面 4. SpringBoot ...
- springboot 全局异常处理 自定义mvc错误页面展示
如下:所有的异常都会进入到这里.根据个人业务按需处理 全局异常处理 @ControllerAdvice public class ErrorAdviceController {//指定捕获对象@Exc ...
最新文章
- 格式化_U盘提示格式化怎么办 U盘提示格式化解决方法【详解】
- rac下重做控制文件
- html调用deeplink,如何优雅地从浏览器打开本地应用deeplink
- 【Python3网络爬虫开发实战】3.1-使用urllib
- 5分绩点转4分_U19男篮世界杯 | 郭昊文空砍23分4篮板5助攻 国青72-86负菲律宾
- oracle 11g安装自己理解
- idea 导入spring 源码 踩坑记总结整理
- MATLAB-阶乘运算
- 新疆计算机二级vb 试题,2014新疆维吾尔自治区全国计算机等级考试二级VB试题及答案...
- 世界读书日 | 这11本书将颠覆技术人士的思维方式
- Qt实战案例(13)——Qt的界面外观详细介绍
- php以大写字母分割,js按大写字母拆分字符串
- 深信服Python笔试
- 怎么实现类似星星闪烁的效果(box-shadow)
- 买笔记本电脑必须知道的事情
- pdf 转 高清图片
- flv直播流播放视频,websocket响应造成内存泄漏 浏览器崩溃
- 计算机方面的英语杂志,计算机类有哪些EI检索的英文期刊
- dos的cd命令输入cd d: 怎么不能切换到D盘了?
- CVE-2010-0188漏洞点定位