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...
一、初始依赖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启动流程分析使用版本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 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...
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...
文章链接:https://www.dianjilingqu.com/51225.html
本文章来源于网络,版权归原作者所有,如果本站文章侵犯了您的权益,请联系我们删除,联系邮箱:saisai#email.cn,感谢支持理解。