在互联网时代,开发的应用大多数是直面用户的,程序中的任何一点小疏忽都可能导致用户流失, 而程序出现错误和异常往往又是不可完全避免的。所以开发程序的过程中,需要设计和实施良好的 错误和异常处理机制。在 Web 开发中,我们知道可以针对错误或异常设计错误页面,以及使用 try…catch 等结构对异常进行捕获和处理。那么对于使用 Spring Boot 创建的 Web 应用程序,错误和 异常处理又要如何进行呢?
Spring Boot 的异常处理机制
Spring Boot 针对错误和异常处理提供了自己的一套默认机制:SpringBoot 为提供一个默认的映射 /error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面来展示异常内容。此外,当应用程序中产生异常时,Spring Boot 根据发送的请求头中的 accept 是否包含 text/html 来分别返回不同的响应信息。当从浏览器地址栏或使用提交按钮提交表单访问应用接口时,请求头中的accept便会包含 text/html 信息,产生异常时,Spring Boot通过 org.springframework.web.servlet.ModelAndView 对象来装载异常信息,并以 HTML 的格式返回,显示默认的错误页面;而当从客户端(如 PostMan)或发送异步请求访问应用接口产生异常时(客户端或 异步请求访问时,请求头中的 accept 不包含 text/html),Spring Boot 则以 JSON 的格式返回异常信息。
例如,我们在一个 Spring Boot Web 项目的Controller中制造一个算数异常,比如除数为0,代码如下: