Objective c 目标C:是否可能看到完整的错误路径?
如何知道完整的错误堆栈 我想知道,如果可能的话,看到调用的函数的完整堆栈 我有一个函数的层次结构,它的层次结构是“一般”->“非常专业” 假设我有5层的层次结构 每个函数都有完成错误块,定义如下:Objective c 目标C:是否可能看到完整的错误路径?,objective-c,error-handling,Objective C,Error Handling,如何知道完整的错误堆栈 我想知道,如果可能的话,看到调用的函数的完整堆栈 我有一个函数的层次结构,它的层次结构是“一般”->“非常专业” 假设我有5层的层次结构 每个函数都有完成错误块,定义如下: typedef (^ErrorBlock)(NSError*error) FunctionWithManyParams:(Param1Type*)param1.... onError:(ErrorBlock)ErrorBlock; 层次结构中的每个函数都有相同的代码部分: onError(NSEr
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);
}
也许你需要:
NSLog(@"%@",[NSThread callStackSymbols]);
太酷了!我不知道有一个简单的Objective-C调用,直到现在,当我想查看调用堆栈时,我一直在玩弄
backtrace()
C调用……我能知道它主体中函数的全名吗?像[self-nameOfCurrentFunction]
@loldop一样,如果需要上下文的方法名,可能应该尝试NSStringFromSelector(_cmd)
。