2011-11-21 102 views
1

在我的代碼中,如果出現異常,那麼我想將該異常轉換爲錯誤,然後想要命中服務(在服務器上記錄此錯誤)。有沒有人有任何想法,如何做到這一點? 還有一個問題,假設我有一個調用另一個方法(另一個類)的方法,該方法又調用任何其他類的另一個方法,即A類的方法A調用B類的方法B,該方法調用方法C C類。那麼,我應該在哪裏將try-catch塊放在我的代碼中? (方法A,方法B,方法C或所有三種方法)錯誤日誌記錄(在try-catch的catch塊中)iPhone

回答

3

有關異常的更多信息處理,你可以參考蘋果文檔

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。

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 
}