在调用栈上传播错误- objective c



在典型的分层体系结构中,如何有效地将源自数据访问层的错误传递给UIViewContoller ?

我有以下设计:

UIViewController s -> datcontroller -> specificserviceproxy -> serviceproxybase

serviceproxybase发起对web服务的调用。我在调用web服务上的操作之前检查网络可用性,并希望在网络崩溃时提醒用户。

最佳实践解决方案是什么?谢谢。

遵循我所使用的模式。当出现错误时,许多方法返回nilNO,这些方法有一个NSError out参数,其中包含有关错误的详细信息。

您可以根据需要将结果和错误传播到各个层。或者一层可以用更层特定的错误包裹错误,并传递新的错误。

遵循此模式的示例方法有:

NSFileManager copyItemAtPath:toPath:error:
NSFileManager attributesOfItemAtPath:error:

您可以使用NSNotificationCenter发布和接收各种错误状态的NSNotification s。

serviceproxybase中,您将为任何感兴趣的观察者发布通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"NoConnectionNotification" object:nil userInfo:someErrorInfoObject];

通常,您会在someErrorInfoObject中打包一个对象,为观察者提供一些额外的细节,例如NSError对象、失败的服务请求或服务的错误代码。在视图控制器中,你会监听viewDidLoadviewWillAppear中的通知:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(handleNoConnectionError:)
                                             name:@"NoConnectionNotification"
                                           object:nil];

现在,每当一个名为NoConnectionNotification的通知被发布时,视图控制器将接收到一个带有相应NSNotificationhandleNoConnectionError:的消息

最新更新