如何进行Spring Boot中error接口异常处理,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
故事的开始是这个样子的。在一个慵懒的午后,闲的蛋疼的一天里我在测试着接口,然后我就看到了如下画面 ,它们是这样的还有这样的:
很显然这是当应用发生错误时候的提示。很不巧的是公司的项目最近好像经常出现各种奇怪的错误异常信息,但是开发人员却由于不能快速的定位问题而一脸懵逼的样子。于是乎我决定是时候把这个异常处理好好给搞一下了(整点自定义啥的让信息更详细)。
如果有人说通过 @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 的 。
老实说这个问题的答案我还是找了一会的。 最后我发现不是在 Spring 中做的这个 forward 操作。必须提前声明下我的项目用的是内嵌的 tomcat ,至于其他类型的容器这篇博客可能并不适用。 forward 到 /error 的操作是在 tomcat 的 org.apache.catalina.core.StandardHostValve 中进行的。
关于如何进行Spring Boot中error接口异常处理问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。