当前位置:  开发笔记 > IOS > 正文

使用NSError检查错误的正确结构

如何解决《使用NSError检查错误的正确结构》经验,为你挑选了1个好方法。

我正在编写各种例程,我正在尽力保持整洁和重构.

我正在创建的方法开始看起来与此代码类似:

-(IBAction)buttonPress:(id)sender {
    // Create Document Shopping List with this document
    [self doSomething:&error];

    if(error) {
        [NSApp presentError:&error];
        return nil;
    }

    [self doSomethingElse:&error];

    if(error) {
        [NSApp presentError:&error];
        return nil;
    }

    [self doYetSomethingElse:&error];

    if(error) {
        [NSApp presentError:&error];
        return nil;
    }
}

我喜欢NSError,但这似乎是处理我所有错误的非常笨拙的方式.

我对替代方法的一些想法:

a)错误检查可以内置到doSomething,doSomethingElse等方法中,但是如果不对返回值进行某种检查,我将无法退出按钮按下方法,这会导致我回到类似的结构.

b)我可以将NSError设置为观察到的键值,但是关于这一点的东西感觉非常错误.我非常清楚KVO滥用的可能性,所以我试图在没有它的情况下做任何事情.

当然我错过了一些非常基本的东西吗?有没有一种模式可以帮助我?或者这个结构好吗?



1> Ivan Sanchez..:

我认为这里提出的答案都没有考虑到Apple推荐的做法.

基本上你不应该检查NSError对象以确定是否存在问题.通过检查从指向指针的指针的方法返回的值来检查是否存在问题NSError.

从Apple文档:

重要成功或失败由方法的返回值指示.虽然Cocoa方法,在可可误差区域间接返回错误的对象是保证返回这样的对象,如果该方法直接返回指示失败nil或者NO,您应经常检查返回值是nilNO试图做的任何事情之前NSError对象.


在这种情况下,您检查其他参数.也就是NSURLResponse和NSData.
推荐阅读
谢谢巷议
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有