Nserror会自己做什么,如果有的话



我希望开始在我的代码中放置错误捕获,我想看看 NSError对象独自为我做什么,以及我必须添加的东西。

查看这个问题和Apple文档,看来NSError所做的所有问题都保留在数字错误代码,错误的位置以及错误的描述。对于这三个项目,我必须在代码中指定它们。然后,如果我想执行类似跳过到当前执行的任何方法的末尾(如果应用程序试图运行它们很可能会造成崩溃),或者显示UIAlertView告诉用户有错误,我有要自己指定所有这些,对吗?

我有点是初学者,所以还有其他我想考虑的事情吗?

NSError是一个用于错误信息的容器,它不会单独使用 do 。该类的设计使您的代码的不同部分可以以标准化的方式相互传达错误信息。只需在一个方法中设置一个错误NSError**的方法什么都没做的 - 呼叫者的责任检查*error是否是非nil,跳过该方法的末尾,显示本地化描述,提示用户进行操作等等,依此类推。

但是, NSError足够灵活,可以使您能够完成所有操作:呼叫者几乎可以提供任何类型的信息;您可以跟踪恢复尝试,向用户显示局部消息,或将其他信息存储在NSError对象中,然后再返回呼叫链。

注意:可可框架方法通常要求您在使用NSError之前检查直接返回值,而不是检查错误是否为nil。如果该方法指示故障,则保证该错误是有效的,但是即使您事先将其设置为nil,也不能保证其成功的nil

nserror作为错误的封装。这是一个很好的OO实践,它允许其他签名强烈地反对它。这就像Java和C#中的异常类一样。它还允许您创建一个指针,以传递到将nserror作为参数的方法中,方法完成后,您可以检查nserror的应用程序可以处理的条件。

您可能需要考虑发布一些代码以帮助说明您要完成的工作。

您可以做的一件事是,在调用填充错误对象的方法后,检查错误是否零或评估错误对象的属性。

看起来像:

-(void)someMethod {
    NSError *error;
    [self myMethod:&error];
    if ( error ) {
        // handle the error, display an alert, etc ...
    }
    else {
        // do other stuff when no error occurs
    }
}

最新更新