若我们开发项目时,会经常返回404,500错误,这种错误在生产开发是不允许出现的,因此就需要对这类错误进行控制。
这里运用了Spring切面的思想,对异常报错进行拦截。
会用到的注解
@ExceptionHandler
表示拦截异常
@ControllerAdvice
1、作为全局异常处理的切面类
2、可以指定扫描范围
3、对于返回值有很好的处理。如果是直接返回 model 类的话,需要使用 @ResponseBody 进行 json 转换返回 String,表示跳到某个 view,返回 modelAndView,返回 model + @ResponseBody
下面为一拦截小Demo
新建拦截类GlobalExceptionHandler
package com.sm.controller;
import java.util.HashMap;
import java.util.Map;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(RuntimeException.class)
@ResponseBody
public Map<String, Object> exceptionHandler() {
Map<String, Object> map = new HashMap<String, Object>();
map.put("errorCode", "500");
map.put("errorMsg", "系統错误!");
return map;
}
}
新建异常类IndexControllerpackage com.sm.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class IndexController {
@RequestMapping("/indexController")
public String index() {
int i = 1/0;
return "IndexController";
}
}
启动项目:
访问http://localhost:8081/indexController

异常错误已成功拦截。

本文介绍如何使用Spring框架的切面思想实现全局异常处理。通过创建一个全局异常处理类,利用@ControllerAdvice注解来捕获并处理运行时异常,将错误信息以JSON格式返回。示例代码展示了如何自定义异常处理器来拦截特定类型的异常。
1698

被折叠的 条评论
为什么被折叠?



