小白的springboot之路(十)、全局异常处理

0、前言

  任何系统,咱们不会傻傻的在每个地方进行异常捕获和处理,整个系统通常咱们会在一个的地方统一进行异常处理,spring boot全局异常处理很简单;前端

  介绍前先说点题外话,咱们如今开发系统,都是先后端彻底分离的,后端只提供RESTfull API,禁止涉及任何界面,什么thymeleaf、JSP那些后端模板,是绝对禁止使用的,那些东西请扔垃圾箱,不要浪费大好青春去研究,那是堕落;前端则负责界面相关,经常使用Vue;若是公司还没先后端分离,还在thymeleaf还在先后端一块儿写,那你仍是早作跳槽打算吧,他们养不起你,更养不起你的家人;web

  先后端分离,后端API,通常对于异常处理,要作得无非两件事,spring

    1是记录日志及相应通知处理,这是对内的,后端

    2是给出返回结果给API调用者,这是对外的;架构

对API调用者来讲,他只须要一个返回结果(包含错误代码、提示信息),其余的他不关心前后端分离

对后端来讲,他只须要记录日志,通知或者给发布相应消息给其余队列处理相关事项;spa

因此:看到过很多人封装了不少个自定义异常类,其实,彻底没有必要,只须要一个异常处理来处理全部异常便可,而后封装一个错误识别码和提示消息的枚举,用于返回给API调用者;而后后端的处理,直接在一个异常处理方法中所有处理就好了,彻底不必封装N多个自定义异常,那没有任何意义;

 

0-一、关于异常的思想认识

  咱们应该认识到,一切异常,对系统来讲,都是不正常的表现,都是属于缺陷,都属于BUG,尽管有些异常是咱们主动抛出的;架构设计

  咱们要作的,是应该尽可能提升系统可用性,最大限度避免任何异常的出现,而不是去期望完善异常处理来完善系统;设计

  异常处理,是异常没法避免的出现了而采起的一种应急措施,主要目的是对外增长友好性,对内提供补救线索;日志

  不要认为完善的异常处理是系统核心,他不是,不要期望异常处理尽善尽美,不要期望异常处理来给系统缺陷擦屁股;

  若是系统异常过多,那么你要作的不是去完善异常处理机制,而是要好好去反思:系统架构设计是否合理,系统逻辑设计是否合理;

 

一、全局异常处理

使用@ControllerAdvice、@ExceptionHandler注解封装一个异常处理类便可
package com.anson.common.exception;

import com.anson.common.result.ResultBody;
import com.anson.common.result.ResultCode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @description: 全局异常处理类
 * @author: anson
 * @Date: 2019/12/17 20:56
 */

@ControllerAdvice
public class GlobalExceptionHandler
{
    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);

    /**
     * 全部异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value =Exception.class)
    @ResponseBody
    public ResultBody exceptionHandler(Exception e)
    {
        //一、写日志及其余处理,对内
        logger.error("未知异常!缘由是:",e);
        System.out.println("未知异常!缘由是:"+e);
        
        //二、返回错误识别码和提示给API调用者、对外
        return ResultBody.failed(ResultCode.FAILED);
    }
}

这样就能够了,

ResultBody、ResultCode这个咱们下节会说到;
相关文章
相关标签/搜索