SpringBoot(三) 全局异常拦截@ControllerAdvice

mac2026-04-18  8

@ControllerAdvice这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:

全局异常处理全局数据绑定全局数据预处理

第一步:采用@ControllerAdvice现在用它来做下全局异常处理,代码如下:

package com.springboot.exceptionHandler; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ResponseBody; import java.util.HashMap; import java.util.Map; @ControllerAdvice public class MyGlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody public Map<String,Object> customException(Exception e) { Map<String,Object> result=new HashMap<String,Object>(); result.put("erroeCode","500"); result.put("errorMsg","系统错误"); return result; } }

第二步:编写一个会抛异常的方法:

@RequestMapping("/errorCtl") public String errorCtl(){ int a=1/0; return a+""; }

第三步:在浏览器上输入http://127.0.0.1:8080/errorCtl 返回如下结果,表示全局异常捕获已经搞定。

如果我们把异常捕获的bean去掉,再去 请求http://127.0.0.1:8080/errorCtl,则展示结果应该是英文

当然我们这里是测试而已,如果是真正的项目开发,这里会跳转到一个错误处理界面。

最新回复(0)