Objective-C:是否可以看到完整的错误路径?

时间:2012-09-14 06:15:35

标签: objective-c error-handling

如何知道完整的错误堆栈?

我想知道,如果有可能的话,可以看到一大堆被调用的函数。

我有一个功能层次结构,它具有层次结构“general” - >“非常专业”。

假设我有5级层次结构。

每个函数都有完成错误块,定义如下:

typedef (^ErrorBlock)(NSError*error)

FunctionWithManyParams:(Param1Type*)param1.... onError:(ErrorBlock)ErrorBlock;

层次结构中的每个函数都具有相同的代码部分:

onError(NSError*error){
    ErrorBlock(error);
}

所以,如果我从高级别(假设n)调用函数,它将从(n-1)级别等调用函数。

如果来自 1-level 的函数有错误,它将回调到非常高级别的函数(非常专业),即调用它。

是否可以知道此通话的完整路径? (或某种技术)?

我想要完整的函数调用,所以,我需要添加这样的东西:

    onError(NSError*error){
       NSString*errorDescription = [self getNameOfFunction];
       NSMutableDictionary * errorDictionary = [NSMutableDictionary dictionary];
       NSString*previousErrorDescription = [error description];

       [errorDictionary setValue:[NSString stringWithFormat:@"%@ >> %@",previousErrorDescription,errorDescription ] forKey:NSLocalizedDescriptionKey];
            NSError * errorNew = [NSError errorWithDomain:vkDomain
                                                  code:errorCode
                                              userInfo:errorDictionary
                               ];
        ErrorBlock(errorNew);
    }

1 个答案:

答案 0 :(得分:2)

也许你需要:

NSLog(@"%@",[NSThread callStackSymbols]);