SpringBoot(十八)异常统一处理及异常处理解析

本文详细介绍了SpringBoot的异常处理机制,包括BasicErrorController的默认处理和自定义统一异常处理。通过配置静态异常处理页面和动态异常处理模板,实现了404和500等错误的定制化展示。此外,还讨论了如何通过继承DefaultErrorAttributes来自定义异常数据。
摘要由CSDN通过智能技术生成

目录

默认异常处理

BasicErrorController

返回页面+数据:errorHtml()

自定义统一异常处理 

静态异常处理页面

动态异常处理(模板引擎)页面

自定义异常数据 


SpringBoot版本:2.1.1 

默认情况下,Spring Boot异常页面显示如下: 

 下面第一句:此应用程序没有针对/error的显式映射。

默认异常处理

Spring Boot提供了一个处理所有异常的映射 “ /error ”,并将其注册为容器中的“全局”异常页面,位于org.springframework.boot.autoconfigure.web.servlet.error.BasicErrorController

对于计算机客户端(比如postman),它会生成一个JSON响应,其中包含错误,HTTP状态和异常消息的详细信息。

对于浏览器客户端,有一个默认的异常视图,它以HTML格式呈现相同的数据,就是上面的默认异常页面。

BasicErrorController

可以看到默认处理就是“/error”请求。有两个请求映射方法errorHtml()和error(),第一个方法是返回页面+数据,第二个方法是放回JSON。

返回页面+数据:errorHtml()

最终是调用DefaultErrorViewResolver的resolveErrorView方法创建ModelAndView 对象,如果返回的ModelAndView 为空,则显示的就是默认的异常页面。

@RequestMapping(produces = MediaType.TEXT_HTML_VALUE)
public ModelAndView errorHtml(HttpServletRequest request,
		HttpServletResponse response) {
        //request.getAttribute("javax.servlet.error.status_code");如果为空则返回500
	HttpStatus status = getStatus(request);
        //得到异常信息,包括timestamp,status,error,message,path;
        //具体可以到DefaultErrorAttributes的getErrorAttributes方法查看
	Map<String, Object> model = Collections.unmodifiableMap(getErrorAttributes(
			request, isIncludeStackTrace(request, MediaType.TEXT_HTML)));
        //设置响应状态
	response.setStatus(status.value());
        //创建ModelAndView 
	ModelAndView modelAndVi
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值