在数字人面试官项目的开发过程中,异常处理和状态码管理是确保系统稳定性和用户体验的重要环节。本文将介绍项目中如何进行异常处理,以及如何使用状态码枚举类来统一管理系统的响应状态。
项目中使用 GraceException 类来实现优雅的异常处理,通过封装自定义异常,统一进行异常抛出。
public class GraceException {
public static void display(ResponseStatusEnum statusEnum) {
throw new MyCustomException(statusEnum);
}
}
在业务逻辑中,如果出现异常情况,可以调用 GraceException.display 方法抛出相应的异常,同时携带状态码和错误信息。例如,在 QuestionLibController 中,如果应聘者信息不存在,会抛出 USER_INFO_NOT_EXIST_ERROR 异常。
@GetMapping("prepareQuestion")
public GraceJSONResult prepareQuestion(@RequestParam String candidateId) {
String candidateInfo = redis.get(REDIS_USER_INFO + ":" + candidateId);
String userToken = redis.get(REDIS_USER_TOKEN + ":" + candidateId);
if (StringUtils.isBlank(candidateInfo) || StringUtils.isBlank(userToken)) {
return GraceJSONResult.errorCustom(ResponseStatusEnum.USER_INFO_NOT_EXIST_ERROR);
}
ResponseStatusEnum 是一个枚举类,用于统一管理系统的响应状态码和消息。该枚举类包含了各种不同的状态码,如操作成功、操作失败、用户未登录、权限不足等。
public enum ResponseStatusEnum {
SUCCESS(200, true, "操作成功!"),
FAILED(500, false, "操作失败!"),
UN_LOGIN(501, false, "请登录后再继续操作!"),
NO_AUTH(503, false, "您的权限不足,无法继续操作!"),
在控制器中,通过返回 GraceJSONResult 并携带相应的状态码和消息,将统一的响应格式返回给前端。例如,在 JobController 中,创建或更新职位信息成功后,返回 SUCCESS 状态码。
@PostMapping("createOrUpdate")
public GraceJSONResult createOrUpdate(@RequestBody JobBO jobBO) {
jobService.createOrUpdate(jobBO);
return GraceJSONResult.ok();
}
使用状态码枚举类的好处主要有以下几点:
- 统一管理:将所有的状态码和消息集中在一个枚举类中,方便管理和维护。
- 可读性强:状态码和消息具有明确的含义,提高了代码的可读性。
- 易于扩展:当需要添加新的状态码时,只需在枚举类中添加新的枚举项即可。
异常处理和状态码管理是数字人面试官项目中不可或缺的部分。通过 GraceException 类和 ResponseStatusEnum 枚举类,项目实现了统一的异常处理和状态码管理,提高了系统的稳定性和可维护性。在后续的开发过程中,我们可以根据业务需求不断完善和扩展状态码枚举类,以应对各种异常情况。