文档章节

Spring Boot /error 接口异常处理简介

OSC知行合一
 OSC知行合一
发布于 08/28 16:17
字数 780
阅读 31
收藏 1

为什么会有这篇博客

    故事的开始是这个样子的。在一个慵懒的午后,闲的蛋疼的一天里我在测试着接口,然后我就看到了如下画面 ,它们是这样的还有这样的:

 

 

很显然这是当应用发生错误时候的提示。很不巧的是公司的项目最近好像经常出现各种奇怪的错误异常信息,但是开发人员却由于不能快速的定位问题而一脸懵逼的样子。于是乎我决定是时候把这个异常处理好好给搞一下了(整点自定义啥的让信息更详细)。  æŸ¥çœ‹æºå›¾åƒ 在搞了一段时间后,终于这篇博客是时候诞生了(老妹儿 法克儿 ***** )。查看源图像

 

Spring Boot 如何处理异常信息?

    如果有人说通过 @ExceptionHandler 来进行处理那也没错 ,不过我在这里要说的是另外一种方式那就是当发生异常后,将这个 Request forward 到一个错误处理的接口上去 , 默认是 /error . Spring Boot 提供了一个默认的 BasicErrorController 来处理这个 /error 接口的请求 。一个方法处理响应 json 格式数据, 另一个函数响应一个 html 页面,也就是我们前面看到的那个不能再糊弄事的 Whitelabel Error Page 。

 

那么看到这个代码我就又产生了一个疑问,这个名字叫做 error 的试图是定义在哪里呢 ? 刚开始的时候我以为是 spring boot 包内部的一个 jsp 或者 html 页面什么的,然后我就开始搜索 ...... 最后没找到。经过 debug 查看源码后我发现了这个东西 :ErrorMvcAutoConfiguration , 里面有一个 WhitelabelErrorViewConfiguration 里面还有一个 SpelView 。就是它了,名称叫 error 的视图,显然这个我们是可以覆盖的只要我们自己再声明一个 bean 名称为 error 就行了。 

 

当然看到这里我大致知道了 spring boot 是如何通过 /error 接口来处理异常的。但是还是觉得心理空落落的 ,感觉还是少了点什么。对了我之前说过了有异常后就会把当前 Request forward 到 /error 这个接口上 , 对了我现在想知道就是在什么地方进行 forward 的 。

 

How to forward a request to the /error interface

老实说这个问题的答案我还是找了一会的。查看源图像  最后我发现不是在 Spring 中做的这个 forward 操作。必须提前声明下我的项目用的是内嵌的 tomcat ,至于其他类型的容器这篇博客可能并不适用。  forward 到 /error 的操作是在 tomcat 的 org.apache.catalina.core.StandardHostValve 中进行的。

  

 

© 著作权归作者所有

OSC知行合一
粉丝 72
博文 118
码字总数 85271
作品 2
东城
程序员
私信 提问
springboot + shiro 权限注解、请求乱码解决、统一异常处理

springboot + shiro 权限注解、请求乱码解决、统一异常处理 前篇 后台权限管理系统 相关: spring boot + mybatis + layui + shiro后台权限管理系统 springboot + shiro之登录人数限制、登录...

wyait
2018/06/06
0
0
Java 及 Springboot 2 中的异常闲谈

Java及springboot2中的异常闲谈 异常的简介 首先看一下常见的 Throwable 类 官方Java 8 Throwable 官方介绍。 Throwable 类是 Java 语言中所有错误或异常的超类。只有当对象是此类(或其子类...

seal_90
2018/08/13
169
0
关于Spring Boot 2.x 自定义ErrorAttributes 不起作用的问题解决

关于Spring Boot 2.x 自定义 ErrorAttributes 不起作用的问题解决 简介 的出现极大的简化了开发流程,封装了很多实用的工具;今天要说的是版本中的异常处理,在中其实已经给我们实现好了异常...

zerokb-小浪
01/30
127
0
baomidou/kaptcha-spring-boot-starter

kaptcha-spring-boot-starter 简介 kaptcha-spring-boot-starter 基于 springBoot2.0 和 Google Kaptcha 验证码组件,kaptcha-spring-boot-starter可以很方便的集成验证码到你的系统中。 如何...

baomidou
2018/05/05
0
0
苞米豆 — 谷歌验证码快速启动器 1.1.0 发布

https://gitee.com/baomidou/kaptcha-spring-boot-starter 修复了一个重复校验引起的Np bug 支持了jdk 1.7 简介 kaptcha-spring-boot-starter 基于 springBoot 和 Google Kaptcha 验证码组件......

小锅盖
2018/07/20
2.5K
10

没有更多内容

加载失败,请刷新页面

加载更多

Rust:最小化窗口后 CPU占用率高 (winit,glutin,imgui-rust)

最近试着用 imgui-rust 绘制界面,发现窗口最小化后CPU占用会增大。 查询的资料如下: https://github.com/rust-windowing/winit/issues/783 https://github.com/ocornut/imgui/issues/1151 ...

reter
18分钟前
6
0
cloud-zuul路由网关

九、zuul路由网关 概述 1.1 能干嘛 路由、过滤 路由基本配置 路由访问映射规则 十、springCloud config分布式配置中心

榴莲黑芝麻糊
19分钟前
6
0
Circuit Breaker模式

Circuit Breaker模式会处理一些需要一定时间来重连远程服务和远端资源的错误。该模式可以提高一个应用的稳定性和弹性。 问题 在类似于云的分布式环境中,当一个应用需要执行一些访问远程资源...

mskk
31分钟前
9
0
写论文之前的准备都有哪些?干货来了!

原文链接:https://www.lwfdy.com/archives/144.html 之前跟大家谈了许多有关于初稿修改以及写作事项需要注意的问题,那么今天我们来说一说,在写之前,我们需要做哪些准备呢,为了做到下笔如...

辅导员
38分钟前
7
0
idea快捷键

Alt + Enter 引入类 Ctrl + O 查看我们继承的类或者接口中的方法,以及我们要实现的方法 Ctrl + Alt + b 查看接口实现类中方法(就是我们使用接口编程时,在调用实现类方法处直接Ctrl+鼠标左...

行者终成事
46分钟前
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部