Seckill-Demo学习笔记:手机号验证与全局异常处理

需积分: 46 3 下载量 97 浏览量 更新于2024-08-05 1 收藏 31KB MD 举报
"商城秒杀项目Seckill-Demo笔记" 这篇笔记主要记录了针对B站乐字节秒杀项目的学习过程,涉及到的关键知识点包括手机号码验证、自定义注解与异常处理,以及SpringBoot的全局异常处理。 ### 自定义手机号码验证 在秒杀系统中,用户信息的准确性至关重要,尤其是手机号码,它通常是用户参与活动的主要凭证。这里通过`validatorUtil`工具类实现了手机号码的验证。利用Java的`Pattern`和`Matcher`类,可以创建一个正则表达式来匹配手机号码的格式。例如,正则表达式可以是`^1[3-9]\\d{9}$`,用于检查11位数字且以1开头的手机号。`matches()`方法用于判断输入的字符串是否符合这个正则表达式,返回结果为布尔值。 ### 自定义注解`@IsMobile`与`IsMobileValidator` 为了规范业务逻辑,可以通过实现`ConstraintValidator<IsMobile, String>`接口创建一个`IsMobileValidator`类,用于判断输入的`mobile`字段是否为必填且格式正确。`@IsMobile`注解可以被添加到字段或方法参数上,使得在运行时进行验证。这样可以提高代码的可读性和可维护性。 ### 异常处理 #### 全局异常处理 在SpringBoot应用中,为了保持代码的整洁和异常处理的一致性,通常会采用全局异常处理机制。这里提到了两种方式: 1. **@ControllerAdvice** - 这种方式只处理控制器中抛出的异常。可以定义多个拦截方法来捕获不同类型的异常,并且可以获取到具体的异常信息,具有较高的灵活性。 2. **@ErrorController** - 这种方式可以捕获任何异常,包括在路由处理之前就发生的错误,如HTTP状态码错误(404、401等)。 这两种方式可以结合使用,@ControllerAdvice处理控制器内部的异常,而@ErrorController则处理更广泛的系统级异常。 ### `GlobalException`与`GlobalExceptionHandler` 1. **GlobalException** - 这是一个自定义的运行时异常类,继承自`RuntimeException`。它包含一个`RespBeanEnum`枚举类型,用于指定异常对应的错误信息和状态码。 2. **GlobalExceptionHandler** - 这个类通过`@RestControllerAdvice`注解,声明为全局异常处理器。它包含一个`@ExceptionHandler(Exception.class)`方法,用来捕获所有类型的异常。当异常是`GlobalException`的实例时,可以直接获取到异常信息并封装成响应bean返回给前端。 总结来说,这个笔记记录了秒杀项目中的手机号码验证、自定义注解的使用以及如何优雅地处理各种异常,这些都是构建高可用Web服务的关键技术。通过这些实践,可以提升系统的健壮性和用户体验。