刷粉网站推广免费,dw8做网站步骤图,太原app定制,做网站需要什么源码55、错误处理-【源码流程】几种异常处理原理 #### 自定义错误页
- **原理**#xff1a; - 在项目中定义特定的错误页面#xff0c;如error/404.html、error/5xx.html等。 - 当系统发生相应错误时#xff0c;服务器会自动查找并返回对应的错误页面。
- **流程**#xff1a… 55、错误处理-【源码流程】几种异常处理原理 #### 自定义错误页
- **原理** - 在项目中定义特定的错误页面如error/404.html、error/5xx.html等。 - 当系统发生相应错误时服务器会自动查找并返回对应的错误页面。
- **流程** 1. 发生错误服务器根据错误状态码如404、500等查找对应的错误页面。 2. 如果找到精确匹配的错误页面则返回该页面否则返回通用的4xx.html或5xx.html页面。 3. 如果都没有匹配的错误页面则触发默认的白页空白页面。 #### ControllerAdvice ExceptionHandler处理全局异常
- **原理** - 使用ControllerAdvice注解标记一个类作为全局异常处理的控制器。 - 在该类中使用ExceptionHandler注解标记方法用于处理特定类型的异常。
- **流程** 1. 程序运行过程中发生异常。 2. Spring框架的ExceptionHandlerExceptionResolver检测到异常。 3. 根据异常类型查找ControllerAdvice类中匹配的ExceptionHandler方法。 4. 执行匹配的ExceptionHandler方法返回相应的处理结果如视图、JSON数据等。
- **示例** java Slf4j ControllerAdvice public class GlobalExceptionHandler { ExceptionHandler({ArithmeticException.class, NullPointerException.class}) public String handleArithmeticException(Exception e) { log.error(发生异常{}, e); return error; // 跳转到错误页面 } } #### ResponseStatus 自定义异常
- **原理** - 创建一个自定义异常类并使用ResponseStatus注解标记指定HTTP状态码和原因。 - 当程序抛出该自定义异常时Spring框架会自动设置响应的HTTP状态码和原因。
- **流程** 1. 程序运行过程中满足特定条件时手动抛出带有ResponseStatus注解的自定义异常。 2. Spring框架的ResponseStatusExceptionResolver检测到该异常。 3. 根据ResponseStatus注解的信息设置响应的HTTP状态码和原因。 4. 返回对应的错误信息给客户端。
- **示例** java ResponseStatus(value HttpStatus.FORBIDDEN, reason 用户数量太多) public class UserTooManyException extends RuntimeException { // 构造方法等 } Controller public class UserController { GetMapping(/register) public String register() { if (userCount MAX_USER_COUNT) { throw new UserTooManyException(); } // ... } } #### Spring自带异常处理
- **原理** - Spring框架内置了一些异常处理器如DefaultHandlerExceptionResolver用于处理Spring框架自身抛出的异常。
- **流程** 1. 程序运行过程中Spring框架检测到自身抛出的异常如MissingServletRequestParameterException等。 2. DefaultHandlerExceptionResolver或其他相应的异常处理器处理该异常。 3. 根据异常类型设置响应的HTTP状态码和错误信息。 4. 返回错误响应给客户端。 通过以上几种方式可以有效地处理程序中的各种异常提高系统的健壮性和用户体验。