Bootstrap

后端——全局异常处理

一、老办法try-catch

当我们执行一些错误操作导致程序报错时,程序会捕捉到异常报错,这个异常会存在一个Exception对象里

那我们在spring boot工程开发时,当我们执行一个sql查询时报错了,那就会从最底层的Mapper层捕捉到Exception异常,然后一路往Service、Controller传出去

那么学过java的应该知道,怎么才能捕捉到这个Exception异常并显示?就得用【try-catch】

那不是说你在mapper层写了一个【try-catch】、或者只在Controller写了【try-catch】就能返回出去Excrption异常对象的,肯定全都要写【try-catch】才能一路传上去,这太麻烦了

二、新办法:全局捕获异常

那我们可以设置一个【全局异常处理器】,来检测到所有异常,然后根据指定的要显示的异常类型来全局显示异常

写法很简单:

用法:

就是多加一个【exception】包,专门放捕获异常的类,然后创建一个捕获异常的类

代码:

package com.czm.tliaswebmanagement.exception;

import com.czm.tliaswebmanagement.pojo.Result;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理器
 */
@RestControllerAdvice //标记这是一个全局异常捕获类
public class GlobalExceptionHandler {
    
    //指定不获的是什么异常类型,Exception.class就是全局异常类型
    @ExceptionHandler(Exception.class)
    public Result ex(Exception ex){
        ex.printStackTrace();
        return Result.error("操作失败,请联系管理员");
    }
}

因为比较简单,我就不详细解释了

;