Spring boot 处理 error 的基本流程:

Controller -> 发生错误 -> BasicErrorController -> 根据 @RequestMapping(produces) 判断调用 errorHtml 或者 error 方法

然后:

errorHtml -> getErrorAttributes -> ErrorViewResolver -> 错误显示页面

error -> getErrorAttributes -> @ResponseBody (直接返回JSON)

如果想要定制一些东西,按照官方文档的建议可以:

1.继承 BasicErrorController  扩展处理一个新的 content type

2.自定义 ErrorAttributes 获得自己想要的结果集

3.实现 ErrorViewResolver 接口,自定义错误显示视图

Spring boot 默认使用 DefaultErrorViewResolver 作为 ErrorViewResolver  的实现,并配置了 4xx, 5xx 视图

 

一般的,并不需要扩展上面的内容,通常情况下,下面两种方式可以应对大部分场景

1.捕获异常:

使用 @ControllerAdvice 与 @ExceptionHandler 捕获异常并处理(返回自定义json对象或是页面视图,将替代 ErrorAttributes、ErrorViewResolver)

注意:如 404 等是通过 Servlet (DispatcherServlet.noHandlerFound) 的处理并返回 response ( response.sendError) ,并未到达 Controller 层,所以并不能捕获到。

2.直接提供相应错误显示视图,有两种方式:

静态页面

创建 error 文件夹,页面命名必须是 status code 或 4xx,位置在 Spring boot 静态资源路径下

模板页面

使用模板页面,默认只需将 error 文件夹放入 templates 下即可

但需要注意如果 prefix 与 suffix 配置 (freemarker),则存放目录与文件后缀需要作相应的改变

3.覆盖Spring boot 默认的 error 页面

将命名为 error.ftl (注意匹配 prefix、suffix)的页面放入 templates 下即可

注意:不要放入 error 文件夹下,这点与 4xx 页面不同

默认全局的 error 页面将显示所有状态下的错误信息,如果放入 4xx 等页面后,将优先匹配 4xx 页面 (根据 status code )

转自:https://www.cnblogs.com/hyl8218/p/10754894.html

推荐这些文章:

Java学习第十四天<Error 和Exception><捕获和抛出异常><自定义异常><异常总结>

 
Error 和Exception
Error错误 无法预见
Exception异常 可预见

 
捕获和抛出异常
package com.exception;

public class Test {
  public static void main(String[] args) {
      int a=1;
      int b=0;
      try {//try 监控区域
        &n...

Spring框架的搭建流程

一、初始依赖1.创建一个空的maven项目
2.在pom.xml中添加依赖 包括: a.junit b.servlet c.mysql-connector,连接池 d.jsp,jstl e.mybatis f.mybatis-spring g.spring
二、SSM三大组件1.Controller层 首先,需要将项目构建成为web项目。 构建完成后,在web.xml中需要添加字符集过滤,将字符集设置为utf-8,同时,对于web.xml中还需要添加spring核心控制器(曾经,所有的servlet的注册都放在了web.xml,现在将改任务交给spring处理,所以改成了s...

异常的分类、抛出、捕获及自定义异常类

需要掌握的三种异常类型
非运行时异常
运行时异常

ArrayIndexOutOfBoudsException(数组下标越界)

NullPointerException(空指针异常)

ArithmeticException (算术异常)

MissingResourceException(丢失资源)

ClassNotFoundException(找不到类)等

这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。一般都是由于程序逻辑错误引起的,应该从逻辑角度尽可能避免这些异常的发生。
错误ERROR

由Java虚拟机生成并抛出,大多数错误与代码编写者所执行的操作...

Spring基础知识(31)- Spring Boot (十二)

默认异常处理、全局异常处理
1. 默认异常处理
    在日常的 Web 开发中,会经常遇到大大小小的异常,此时往往需要一个统一的异常处理机制,来保证客户端能接收较为友好的提示。Spring Boot 同样提供了一套默认的异常处理机制。
    1) Spring Boot 默认异常处理机制
        Spring Boot 提供了一套默认的异常处理机制,一旦程序中出现了异常,Spring Boot 会自动识别客户端的类型(浏览器或客户端APP),并根据客...

.NET C# try catch捕获异常信息,并用log4net输出的一个小知识点

 
 
 
catch捕获异常之后 输出logger.Error(ex.message);只是文字信息。 输出logger.Error(ex) 可以记录程序集-类-方法信息 甚至 具体报错行数 方便排查问题。  
 

...

Spring Boot启动流程

Spring Boot启动流程
 
        君生我未生,君生我已老。君恨我生迟,我恨君生早。
 
 一、简述
Spring Boot启动流程分析使用版本SpringBoot VERSION:版本 2.5.5-SNAPSHOT。
Spring Boot项目最简单的Application启动类。

可以看出Application启动类中,包含了@SpringBootApplication 注解和 SpringApplication.run 启动方法,所以SpringBoot的启动可以分解为 注解 和 启动方法 两大过程,而仔细看启动类中还引入了一个【org....

Spring基础知识(28)- Spring Boot (九)

静态资源映射、Thymeleaf 模板、整合 Thymeleaf
1. 静态资源映射
    在 Web 应用中会涉及到大量的静态资源,例如 JS、CSS 和 HTML 等。我们知道,Spring MVC 导入静态资源文件时,需要配置静态资源的映射;但在 SpringBoot 中则不再需要进行此项配置,因为 SpringBoot 已经默认完成了这一工作。    Spring Boot 默认为我们提供了 3 种静态资源映射规则:        (1) 默认资源映射&...

推荐一个 Spring Boot 快速开发利器

点击“终码一生”,关注,置顶公众号
每日技术干货,第一时间送达!
 
 
Spring boot CLI是运行spring boot命令的命令行界面。Spring提供了用于创建、运行和测试spring boot应用程序的spring命令。
Spring boot CLI应用程序使用groovy语言,通过这种方式,我们用最少的代码行创建我们的应用程序并启动它。
使用groovy的Spring boot CLI具有以下特点。
1. Spring boot CLI应用程序使用groovy。我们在应用程序中创建groovy文件,为此我们不需要提供groovy的任何JAR依赖。Sp...

Spring基础知识(29)- Spring Boot (十)

整合 Thymeleaf、国际化
1. 整合 Thymeleaf
    Spring Boot 推荐使用 Thymeleaf 作为其模板引擎。SpringBoot 为 Thymeleaf 提供了一系列默认配置,项目中一但导入了 Thymeleaf 的依赖,相对应的自动配置 (ThymeleafAutoConfiguration) 就会自动生效,因此 Thymeleaf 可以与 Spring Boot 完美整合 。    Spring Boot 通过 ThymeleafAutoConfiguration 自动配置类对 Thymele...

Tomcat中配置错误显示页面 一

web.xml

<error-page>
<error-code>500</error-code>
<location>/pages/error/error500.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/pages/error/error404.jsp</location>
</error...

文章标题:Spring boot 处理 error 的基本流程:
文章链接:https://www.dianjilingqu.com/51225.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。
THE END
< <上一篇
下一篇>>