@throws或NSError哪个适合于客观的C api方法

时间:2013-07-09 21:21:16

标签: objective-c nserror nsexception

哪一个是最受欢迎的目标C异常处理? NSError指针,它为指针提供消息详细信息,或者@throws强制调用者处理异常并显示一些优雅的消息。感谢。

和alos请告诉我哪一个内存有效。

1 个答案:

答案 0 :(得分:1)

与Java不同,在Objective-C中,异常仅用于处理不可恢复的状态。这意味着,例如,您没有捕获 EXC_BAD_ACCESS ,而是调试应用程序并更正问题。

Java异常的Objective-C等价物是 NEError 和空指针模式。例如,如果格式化程序无法将字符串格式化为数字,因为该字符串不表示数字,则返回 nil 。还有一种方法可以格式化带有 NSError 双指针的数字,以返回错误描述。

因此,为了处理错误,您通常会实现这样的方法:

- (id) object : (out NSError**) error
{
    BOOL ok= ... 
    if(!ok)
    {
        if(error)
            *error= ...
        return nil;
    }
    return someObject;
}