您的位置:首页技术文章
文章详情页

SpringBoot配置系统全局异常映射处理

【字号: 日期:2023-03-03 13:04:20浏览:18作者:猪猪
目录一、异常分类 1、业务异常2、系统异常二、解决应用启动后404界面1、引入页面Jar包2、自定义首页接口3、首页界面4、运行效果三、SpringBoot2.0中异常处理 1、项目结构图2、自定义业务异常类3、自定义异常描述对象4、统一异常处理格式5、简单的测试接口四、源代码地址 一、异常分类

这里的异常分类从系统处理异常的角度看,主要分类两类:业务异常和系统异常。

1、业务异常

业务异常主要是一些可预见性异常,处理业务异常,用来提示用户的操作,提高系统的可操作性。

常见的业务异常提示:1)请输入xxx2)xxx不能为空3)xxx重复,请更换

2、系统异常

系统异常主要是一些不可预见性异常,处理系统异常,可以让展示出一个友好的用户界面,不易给用户造成反感。如果是一个金融类系统,在用户界面出现一个系统异常的崩溃界面,很有可能直接导致用户流失。

常见的系统异常提示:1)页面丢失4042)服务器异常500

二、解决应用启动后404界面

SpringBoot配置系统全局异常映射处理

1、引入页面Jar包

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>2、自定义首页接口

import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class IndexController { @RequestMapping('/') public String index(ModelMap modelMap) {modelMap.addAttribute('name','知了一笑') ;return 'index'; }}3、首页界面

<!DOCTYPE html><html><head lang='en'> <meta charset='UTF-8' /> <title></title></head><body><h1 th:text='${name}'></h1></body></html>4、运行效果

SpringBoot配置系统全局异常映射处理

三、SpringBoot2.0中异常处理 1、项目结构图

SpringBoot配置系统全局异常映射处理

2、自定义业务异常类

public class ServiceException extends Exception { public ServiceException (String msg){super(msg); }}3、自定义异常描述对象

public class ReturnException { // 响应码 private Integer code; // 异常描述 private String msg; // 请求的Url private String url; // 省略 get set 方法}4、统一异常处理格式

1)两个基础注解@ControllerAdvice 定义统一的异常处理类@ExceptionHandler 定义异常类型对应的处理方式2)代码实现

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;@ControllerAdvice// 异常以Json格式返回 等同 ExceptionHandler + ResponseBody 注解// @RestControllerAdvicepublic class HandlerException { /** * 自定义业务异常映射,返回JSON格式提示 */ @ExceptionHandler(value = ServiceException.class) @ResponseBody public ReturnException handler01 (HttpServletRequest request,ServiceException e){ReturnException returnException = new ReturnException() ;returnException.setCode(600);returnException.setMsg(e.getMessage());returnException.setUrl(String.valueOf(request.getRequestURL()));return returnException ; } /** * 服务异常 */ @ExceptionHandler(value = Exception.class) public ModelAndView handler02 (HttpServletRequest request,Exception e){ModelAndView modelAndView = new ModelAndView() ;modelAndView.addObject('ExeMsg', e.getMessage());modelAndView.addObject('ReqUrl', request.getRequestURL());modelAndView.setViewName('/exemsg');return modelAndView ; }}5、简单的测试接口

@Controllerpublic class ExeController { /** * { * 'code': 600, * 'msg': '业务异常:ID 不能为空', * 'url': 'http://localhost:8003/exception01' * } */ @RequestMapping('/exception01') public String exception01 () throws ServiceException {throw new ServiceException('业务异常:ID 不能为空'); } @RequestMapping('/exception02') public String exception02 () throws Exception {throw new Exception('出现异常,全体卧倒'); }}

SpringBoot配置系统全局异常映射处理

四、源代码地址

GitHub:知了一笑https://github.com/cicadasmile/spring-boot-base

以上就是SpringBoot配置系统全局异常映射处理的详细内容,更多关于SpringBoot 异常映射处理的资料请关注好吧啦网其它相关文章!

标签: Spring
相关文章: