2010-04-27 60 views
4

在sdk中處理異常的語法是什麼?如何處理iphone中的異常。什麼文件更多地瞭解?教程,示例代碼是最需要和感激的。iphone中的異常處理?

+0

可能重複問題:HTTP://stackoverflow.com/a/12068967/846372 – Soniya 2012-08-22 08:17:57

回答

6

例外在Objective-C是一個頗具爭議的問題,甚至是App除非絕對必要,否則他們會阻止你使用它們。

我的第一個問題是你想從異常處理中獲得什麼?如果您從Java的角度來看,以及如何將異常緊密地集成到該語言中以處理錯誤(即流控制),那麼我認爲爲此目的使用objective-c異常是不可取的,您需要使用NSError並處理錯誤那樣。

這是來自蘋果的文檔片段: -

例外是資源密集型的 的Objective-C。您不應將 例外用於一般流量控制, 或僅用於表示錯誤。相反,您應該使用 方法或函數的返回值來指示發生了 錯誤,並在 錯誤對象中提供有關該問題的信息 。欲瞭解更多信息,請參閱 Error Handling Programming Guide For Cocoa.

+0

一個有趣的解說,肯定的。例外的一個主要目的是做蘋果公司說不使用它們的東西。閱讀你的灰色文本,這正是爲什麼例外是有用的。 – KevinDTimm 2010-04-27 17:48:18

+1

「您不應該使用例外...來表示錯誤」。 *真*?在這種情況下,我一直在錯誤地使用例外很長一段時間:P – 2010-04-27 18:05:17

+0

例外情況應該用於特殊情況,不應該發生的事情,不管用戶在做什麼。它們可以表示錯誤,但錯誤應該非常少見,並且應用程序結束。如果您需要捕獲常見錯誤(無法寫入磁盤,網絡連接失敗等),並將它們呈現給用戶,則推薦使用NSError。 – 2010-04-27 22:26:27

4

看到蘋果公司在Objective-C的異常處理的文檔:

從文檔基本例如:

Cup *cup = [[Cup alloc] init]; 

@try { 
    [cup fill]; 
} 
@catch (NSException *exception) { 
    NSLog(@"main: Caught %@: %@", [exception name], [exception reason]); 
} 
@finally { 
    [cup release]; 
}