场景
SpringBoot中创建全局异常处理器,使发生异常时能处理。
实现
在项目下新建handler包,在包下新建GlobalExceptionHnadler.java
package com.example.demo.handler;
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(Exception.class)
@ResponseBody
public Map<String,Object> handlerExcception(Exception e) {
Map<String,Object> map = new HashMap<>();
map.put("code",500);
map.put("message",e.toString());
return map;
}
}
通过添加注解@ControllerAdvice实现。
@ExceptionHandler(Exception.class)声明处理异常的种类,这里是所有异常。
新建Controller进行测试
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class TestHandlerController {
@RequestMapping("/testHandler")
@ResponseBody
public String show()
{
int a=5/0;
return "testHandler";
}
}
在项目启动类中添加handler包为扫描包。
@SpringBootApplication(scanBasePackages= {"com.example.demo.controller","com.example.demo.service","com.example.demo.interceptor","com.example.demo.handler"})
启动项目,访问
http://localhost:8080/testHandler