springboot异常处理机制
一、SpringBoot 404、500错误提示页面
错误提示页面的命名规则就是:错误码.html,如404是404.html,500是500.html 放在,也可以使用4xx.html,5xx.html,优先精确匹配也就是说如果404错误,会匹配的404.html
文章图片
如果使用freemarker则对应的是404.ftl,500.ftl
二、异常处理
@ExceptionHandler异常处理
SpringMVC提供了@ExceptionHandler 这个注解,在 SpringBoot 里面,我们同样可以使用它来做异常捕获。直接在对应的 Controller 里面增加一个异常处理的方法,并使用 @ExceptionHandler 标识它即可。
@ExceptionHandler(BuinessException.class)
public String handleException(BuinessException e,Model model){
model.addAttribute("code",e.getCode() );
model.addAttribute("msg",e.getMessage());
return "error/exception";
}
@ExceptionHandler 拦截了异常,我们可以通过该注解实现自定义异常处理。其中,@ExceptionHandler 配置的 value 指定需要拦截的异常类型
这样只能做到单一的controller异常处理,项目中一般都存在着多个 Controller,它们其中大多数异常处理都大同小异,这样就合适在每一个 Controller 里面都编写一个对应的异常处理方法。可以将异常处理方法向上挪移到父类中,然后所有的 Controller 统一继承父类即可
@ControllerAdvice异常处理
实际开发中,需要对异常分门别类的进行处理,ControllerAdvice拦截异常并统一处理,
package com.sun.houses.controller.adapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import com.sun.houses.exception.BuinessException;
@ControllerAdvice
public class MyExceptionHandler {
private static Logger LOGGER = LoggerFactory.getLogger(MyExceptionHandler.class);
@ExceptionHandler(BuinessException.class)
public String handleException(BuinessException e,Model model){
LOGGER.error("buiness exception code:{},message:{}",e.getCode(),e.getMessage());
model.addAttribute("code",e.getCode() );
model.addAttribute("msg",e.getMessage());
return "error/exception";
}}
【springboot异常处理机制】@ExceptionHandler 指定要拦截的异常,我这里是自定义异常BuinessException
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- Java|Java OpenCV图像处理之SIFT角点检测详解
- 解决SpringBoot引用别的模块无法注入的问题
- 事件处理程序
- 爬虫数据处理HTML转义字符
- python-安装sublime遇到异常
- Android|Android BLE蓝牙连接异常处理
- springboot使用redis缓存
- springboot整合数据库连接池-->druid