UserController中添加这行代码
BusniessException和EmBussniessError都继承了CommonError接口方法,以至于外部不仅可以new EmBussniessError或者new BusniessException都可以有errCode和errMsg对应的组装定义并且需要共同实现setErrMsg方法可以用于将原本Enum中定义的ErrMsg覆盖
实现这些接口
程序出了跑不下去的异常,统一抛一个异常,这个异常会被Controller层一个SpringBoot的handerl捕获并做一些处理
BusniessException
通过二次改写errMsg方式
实现类方法
需要一个接口去改动ErrMsg,通过定制化去改动它
有了这些之后,就能在通用错误码无限填值就可以了
2.创建EmBussniessError子类实现了CommonError接口里的方法
EmBussniessError构造方法接受入参
将错误信息取出来
当status是fail时,只需要data返回对应的错误码就行了
定义一个通用的错误形式
创建error包,声明一个接口CommonError,定义getErrCode(),getErrMsg(),setErrMsg()方法
当status是fail时,只需要data返回对应的错误码就行了
通用错误形式
包装器业务异常类实现
设计思想??
枚举类-状态码的应用
----前后端的协调,模块开发之间的协调
枚举可以有属性,是个类。定义全局错误码。分布式开发时需要通用的文件做状态码管理。构造函数中super()就是继承的类自身会有初始化机制。
BusinessException和EmBussinessError都共同继承CommonError对应的方法。外界不管是从BusinessException还是EmBussinessError都可以有state和message的组装定义。并且需要共同实现setErrMsg方法,可以用于将原本em中定义的message覆盖掉。
为了给前端返回有效信息,CommonReturnType把正确与否的信息和因该返回的数据一起给前端。
装饰者模式 ,可以使用BusinessException类中的setErrMsg方法将Enum类型的EmBusinessError类中定义的errMsg覆盖掉。
super与this的使用待修炼
Mark:【设计模式:包装器业务异常类实现】