1.框架提供异常

框架提供两种异常:

  • BizException
  • FrameworkException

BizException

用于处理业务异常,提供了若干默认构造方法

  • BizException(Integer code, String message)
  • BizException(Integer code, String message, Boolean sentAlarmMessage)
  • BizException(XyEnum xyEnum)
  • BizException(XyEnum xyEnum, Boolean sentAlarmMessage)

�可根据sentAlarmMessage值判断,是否要发送异常信息到lark群。

�XyEnum为枚举类型,默认提供BizCodeEnum枚举。

  1. SUCCESS(200, "操作成功"),
  2. PARAM_ERROR(10001, "参数错误"),
  3. PARAM_IS_NULL(10002, "参数为空"),
  4. METHOD_NOT_EXIST(10003, "方法名不存在"),
  5. API_NOT_EXIST(10004, "请求的API不存在"),
  6. INVALID_DATA_FORMAT(10005, "无效的数据格式"),
  7. APP_KEY_MISSING(10006, "缺少AppKey参数"),
  8. APP_KEY_INVALID(10007, "非法的APP Key"),
  9. ACCESS_TOKEN_INVALID(10008, "无效的access token"),
  10. CALL_SERVICE_ERROR(11001, "调用服务异常"),
  11. PROCESS_FAIL(11002, "服务器处理失败"),
  12. OPERATION_FAILED(11003, "操作失败"),
  13. SYSTEM_EXCEPTION(11004, "系统异常"),
  14. REQUEST_LIMIT(11005, "请求被限流"),
  15. GET_DISTRIBUTED_LOCK_FAILED(11006, "获取分布式锁失败"),
  16. FILE_PARSE_EXCEPTION(11007, "文件解析异常"),
  17. FILE_DOWN_LOAD_EXCEPTION(11008, "文件下载异常"),
  18. FILE_UP_LOAD_EXCEPTION(11009, "文件上传异常"),
  19. FILE_ROWS_OVER_LIMIT_EXCEPTION(11010, "文件上传行数超过最大限制行数"),
  20. FILE_WRITE_EXCEPTION(11011, "写文件异常"),
  21. RECORD_EXIST(12001, "记录已存在"),
  22. RECORD_NOT_EXIST(12002, "记录不存在"),
  23. CONTENT_IS_NULL(12003, "内容为空"),
  24. CONTENT_IS_ILLEGAL(12004, "包含非法内容"),
  25. VERSION_ERROR(12005, "版本号错误"),
  26. REPEAT_OPERATION(12006, "重复操作"),
  27. BEAN_TRANS_EXCEPTION(12008, "对象转换异常"),
  28. CAN_NOT_DELETE_WITH_CHILD_DATA(12009, "该记录下有关联数据,请先解除绑定后再删除"),
  29. SHOP_IS_NOT_EXIST(12007, "门店不存在"),
  30. ORDER_IS_NOT_EXIST(12007, "订单不存在"),
  31. TOO_MANY_REQUEST(13001, "访问过于频繁"),
  32. PERMISSION_DENY(13002, "无访问权限"),
  33. AUTHENTICATION_EXPIRED(13003, "身份认证过期"),
  34. IP_LIMIT(13004, "IP限制"),
  35. INSUFFICIENT_USER_PERMISSIONS(13005, "用户权限不足"),
  36. AUTH_FAIL(13006, "鉴权失败"),
  37. ILLEGAL_OPERATION(13007, "非法操作"),
  38. USER_NOT_EXISTS(14001, "用户不存在"),
  39. USER_CANCELLATION(14002, "用户已注销"),
  40. USER_FREEZING(14003, "账号已冻结"),
  41. PHONE_NUMBER_HAS_BEEN_USED(14004, "该手机号已经被使用"),
  42. USERNAME_OR_PASSWORD_ERROR(14005, "用户名或者密码错误"),
  43. LOGOUT_BY_LIMIT_STRATEGY(14006, "您账号已被强制登出"),
  44. LOGIN_FAILED_FIVE_TIMES(14007, "密码错误5次,您的账号已经被封停30分钟"),
  45. LOGIN_FAILED_WITH_TIMES(14008, "密码错误{0}次"),
  46. SMS_CODE_REQUEST_MORE_THAN_FIVE_TIMES(14009, "短信验证码请求次数过多,请30分钟之后再获取"),
  47. CHANGE_DEVICE_MORE_THAN_FIVE_TIMES(14010, "切换设备过于频繁,您的账号已经被封停30分钟"),
  48. DIFF_LAST_LOGIN_DEVICE(14011, "您的账号尝试在非常用设备登陆,请用使用短信验证码方式重新登陆"),
  49. NO_NEED_EXECUTE(14012, "不需要执行"),
  50. PHONE_OR_VERIFICATION_CODE_NOT_EXISTS(14013, "手机号或验证码不正确"),
  51. TEMPLATE_CODE_NOT_EXISTS(14014, "templateCode为空"),
  52. SMS_SENDING_FAILED(14015, "发送短信失败"),
  53. CAPTCHA_GENERATE_FAILED(14016, "获取验证码异常"),
  54. CAPTCHA_VALIDATE_FAILED(14017, "验证码错误"),
  55. CAPTCHA_IS_NULL(14018, "验证码为空"),
  56. USER_EXISTS(14019, "用户已存在"),
  57. UPLOAD_FAILED(15001, "oss上传失败"),
  58. ID_CARD_ERROR(16001, "身份证号码格式不正确"),
  59. FRAMEWORK_EXCEPTION(17001, "FrameworkException"),
  60. End(99999, "不需要执行");

若涉及国际化,则根据code为key,定义即可。

FrameworkException

用于底层框架,与业务无关的异常。

  • FrameworkException(XyEnum xyEnum)
  • FrameworkException(Integer code, String message)

��

2.统一异常拦截

异常统一处理 - 图1

在项目的aop包中提供了ControllerAdvice统一异常处理类。

所有的异常,都会打印到cat的Problem中。

如果异常是BizException类型,会根据用户传入的是否发送消息标识来决定是否要发送到lark群中。

对于非BizException,全部会发送lark信息。