zoukankan      html  css  js  c++  java
  • SringBoot 异常处理

    SringBoot 异常处理

    Spring Boot 中默认的错误处理机制

    spring boot 应用默认对浏览器请求和Http请求错误处理不同方法

    • spring boot 默认异常处理类
    @Controller
    @RequestMapping("${server.error.path:${error.path:/error}}")
    public class BasicErrorController extends AbstractErrorController {}
    
    • 浏览器访问(请求头包含信息 accept:text/html)
    @RequestMapping(produces = "text/html")
    	public ModelAndView errorHtml(HttpServletRequest request,
    			HttpServletResponse response) {}
    
    • http请求
    @RequestMapping
    	@ResponseBody
    	public ResponseEntity<Map<String, Object>> error(HttpServletRequest request) {}
    

    自定义异常处理

    浏览器访问自定义异常

    创建异常页面

    • 在resources下创建resources/error目录
    • 自定义异常页html

    返回json数据,自定义异常处理

    1. 自定义异常类型
    public class UserNotExistException extends RuntimeException {
        private String id;
        public UserNotExistException(String id) {
        		super("user not exist");
        		this.id = id;
        	}
    }	
    
    1. 定义异常处理类,使用@ControllerAdvice注解专门用来处理controller抛出的异常
    @ControllerAdvice
    public class ControllerExceptionHandler {
    	@ExceptionHandler(UserNotExistException.class)
    	@ResponseBody
    	@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    	public Map<String, Object> handleUserNotExistException(UserNotExistException ex) {
    		Map<String, Object> result = new HashMap<>();
    		result.put("id", ex.getId());
    		result.put("message", ex.getMessage());
    		return result;
    	}
    
    }
    
    • 方法以异常对象作为参数
    • @ExceptionHandler(UserNotExistException.class)指定要处理的异常
    • @ResponseBody返回json串
    • @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)设置返回的状态码
  • 相关阅读:
    [docker]Kubernetes的yaml文件
    [redis]redis-cluster的使用
    [redis]redis-cluster搭建
    [docker]本地仓库的创建的使用
    1W字看懂互联网知识经济
    PHP基础陷阱题(变量赋值)
    PHP不用第三变量交换2个变量的值的解决方法
    PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
    PHP实现四种基本排序算法
    WEB安全之Token浅谈
  • 原文地址:https://www.cnblogs.com/fjf3997/p/13023426.html
Copyright © 2011-2022 走看看