错误记录(在try-catch的catch块中)iPhone

时间:2011-11-21 05:39:47

标签: iphone objective-c ios

在我的代码中,如果出现异常,那么我想将该异常转换为错误,然后想要命中服务(在服务器上记录此错误)。有人有任何想法,怎么做? 还有一个问题,假设我有一个调用另一个方法(另一个类)的方法,该方法又调用任何其他类的另一个方法,即类A的方法A调用类B的方法B,它调用类的方法C C.那么,我应该在我的代码中放置try-catch块? (在方法A,方法B,方法C或所有三种方法中)

2 个答案:

答案 0 :(得分:3)

您可以将@try / @catch块放在任何位置。我认为最好的编程实践是将它放在你认为可能引发异常的地方(因为你可以在那时为控制台输入一个非常详细的错误/ NSLog行)。

但无论如何......你想要做的是:

@try {
    // do your potentially exception-throwing code here
}
@catch(NSException * e) 
{
    NSLog( @"exception thrown in method C; %@ %@", [e name], [e reason] );
    // and you could even throw in [e.userInfo description], too
}

答案 1 :(得分:3)

有关异常处理的更多信息,请参阅Apple文档

http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/Chapters/ocExceptionHandling.html

现在提出下一个问题,即放置try catch块的位置。

类A的方法A调用类B的方法B,它调用类C的方法C,因此你可以看到在这个过程中线程是相同的,内存堆也是相同的。

因此在类A中应用try catch块。因此它将处理由其他类引起的异常,即B和C.(例外是全局的)

但是你希望单独处理不同类的异常,所以在这些类中应用try catch。