エラーの完全なスタックを知るには?
可能であれば、呼び出された関数の完全なスタックを確認したいと思います。
「一般」->「非常に専門的」な階層を持つ機能の階層があります。
5レベルの階層があるとします。
各関数には、次のように定義された完了エラー ブロックがあります。
typedef (^ErrorBlock)(NSError*error)
FunctionWithManyParams:(Param1Type*)param1.... onError:(ErrorBlock)ErrorBlock;
階層内の各関数には、コードの同じ部分があります。
onError(NSError*error){
ErrorBlock(error);
}
したがって、高レベル (n)から関数を呼び出すと、(n-1) レベルなどから関数が呼び出されます。
また、1 レベルの関数にエラーがある場合は、それを呼び出す非常に高レベルの関数 (非常に特殊化された) にコールバックされます。
この呼び出しのフルパスを知ることは可能ですか? (またはそのためのテクニック)?
関数呼び出しの完全なトレースを取得したいので、次のようなものを追加する必要があります。
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);
}