开发者

Spring教程之异常捕获方式

开发者 https://www.devze.com 2025-05-10 10:24 出处:网络 作者: terrybg
目录概述@RestControllerAdvic编程e注解总结概述 在Spring中,封装了全局异常捕获方法,方便我们处理和管理异常,捕获异常可以解决以下业务场景:
目录
  • 概述
  • @RestControllerAdvic编程e注解
  • 总结

概述

在Spring中,封装了全局异常捕获方法,方便我们处理和管理异常,捕获异常可以解决以下业务场景:

  1. 友好返回给用户提示。
  2. 记录日志方便排查问题
  3. 方便管理异常等

以下程序模拟在Controller中出现异常编程

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

/**
 * 全局异常捕获测试
 * @author terry
 * @version 1.0
 * @date 2022/1/6 14:29
 */
@RestController
@RequestMapping("/gloab")
public www.devze.comclass GloabExceptionController {

    @RequestMapping("/test1")
    public String test1(){
        // 模拟异常
        int i = 1/0;
        return "success";
    }
}

打印输出

{

    "timestamp": "2022-01-06T06:51:26.538+00:00",

    "status": 500,

    "error": "Internal Server Error",

    "message": "",

    "path": "/gloab/test1"

}

出现问题:

当发送异常之后,android后续的代码都不执行了,而且返回的参数也不是我们需要的。

@RestControllerAdvice注解

@RestControllerAdvice和@ControllerAdvice都是全局捕获异常配置类,@RestControllerAdvice更适用于返回jsON数据,@ControllerAdvice返回JSON需要方法额外添加@ResponseBody。

@RestControllerAdvice
class GloabExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public String exceptionHandler(Exception e){
        System.out.println("ERROR: " + e.getMessage());
        return "error";
    }
}

打印输出

error

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程客栈(www.devze.com)。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号