mvvmdemo icon indicating copy to clipboard operation
mvvmdemo copied to clipboard

请教关于异常的处理方式

Open lmule opened this issue 8 years ago • 2 comments

从源码里面学习了不少东西,但是关于异常处理的方式作为demo是没有问题的,但如果封装成lib的话,请问下面这个场景怎么封装比较好: 后端返回的基本格式是一样的,比如返回{code:0,msg:'success',data:{a:1,b:1}},只是data返回的数据不一样(其中code=-1表示没有权限,code=-2表示尚未登录,对于整个系统来说,这些逻辑错误的处理方式是公共的,没有权限弹出浮层提示,尚未登录则跳转到登录页)依照博文的观点,这种逻辑错误应该放到每个[_fetchDataItemsCommand.executionSignals switchToLatest] subscribeNext里面,这样就造成了很多重复和冗余,目前我想到两个解决方案 1、在BaseViewModel抽取个函数,让每个subscribeNext都调用 2、直接在httpGet的readuceEach里面switch(ResponseData.errorCode) 但感觉这两种方案都感觉略不优雅 我想放到httpGet的readuceEach里面来抛出NSError,通过BaseViewModel.errors来处理这些公共的错误处理,每个command个性化的逻辑错误写到[_fetchDataItemsCommand.executionSignals switchToLatest] subscribeNext里面自己处理。 但试了好多写法,在_fetchDataItemsCommand.errors和_viewModel.errors里面都取不到,请问应该怎么处理比较合适呢?谢谢

lmule avatar Jan 08 '17 04:01 lmule

首先,很高兴能帮助到你。 我其实对swift并不是特别熟悉,这份demo只是当时学习swift时写的,肯定会有设计不合理的地方。 关于你提到的问题,我说下我的建议吧,但是不一定正确,哈哈。 首先可以肯定,这种处理不应该放到每个数据回调里处理。我之前OC项目里是在httpGet的基类里判断code,如果code=-1或者-2,就post一个通知,然后在window的rootViewController里监听这个通知,再进行相应的UI处理(比如弹出没有权限浮层,或者跳转到登录页)。 你看看这个方案可不可行?

songhailiang avatar Jan 11 '17 01:01 songhailiang

好吧你是用的第二种方式,😝 其实我也是

lmule avatar Jan 11 '17 12:01 lmule