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

网友投稿 477 2023-01-08

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

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

目录一、异常分类 1、业务异常2、系统异常二、解决应用启动后404界面1、引入页面Jar包2、自定义首页接口3、首页界面4、运行效果三、SpringBoot2.0中异常处理 1、项目结构图2、自定义业务异常类3、自定义异常描述对象4、统一异常处理格式5、简单的测试接口四、源代码地址

一、异常分类

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

1、业务异常

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

常见的业务异常提示:

1)请输入xxx

2)xxx不能为空

3)xxx重复,请更换

2、系统异常

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

常见的系统异常提示:

1)页面丢失404

2)服务器异常500

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

1、引入页面Jar包

    org.springframework.boot

    spring-boot-starter-thymeleaf

2、自定义首页接口

import org.springframework.stereotype.Controller;

import org.springframework.ui.ModelMap;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class IndexController {

    @RequestMapping("/")

    public String index(ModelMap modelMap) {

        modelMap.addAttribute("name","知了一笑") ;

        return "index";

    }

}

3、首页界面

    

    

4、运行效果

三、SpringBoot2.0中异常处理

1、项目结构图

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 注解

// @RestControllerAdvice

public 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、简单的测试接口

@Controller

public class ExeController {

    /**

     *  {

     *    "code": 600,

     *    "msg": "业务异常:ID 不能为空",

     *    "url": "http://localhost:8003/exception01"

     *  }

     */

 &nbhttp://sp;  @RequestMapping("/exception01")

    public String exception01 () throws ServiceException {

        throw new ServiceException("业务异常:ID 不能为空");

    }

    @RequestMapping("/exception02")

    public String exception02 () throws Exception {

        throw new Exception("出现异常,全体卧倒");

    }

}

四、源代码地址

github:知了一笑

https://github.com/cicadasmile/spring-boot-base

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:druid升级后sql监控页面为空白的解决
下一篇:企业app开发注意事项(开发app公司需要注意什么)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~