2011-04-25 151 views
-4

我的iPhone應用程序在執行期間的某個時間點崩潰。我不希望應用程序突然終止,我希望顯示一條警告消息,如「對不起應用程序遇到錯誤」,並且在警報視圖中按下確定時應用程序應關閉。如何防止iPhone應用程序突然關閉或崩潰?

是否有任何異常或錯誤處理程序,我可以在我的appdelegate文件中使用?

請告訴我..

謝謝你的一個和所有。

+5

」,我希望顯示一條警告消息像「抱歉,應用程序遇到錯誤」「 - 實際上,你真正想要的是找到並刪除代碼中的錯誤! – 2011-04-25 06:05:24

回答

-2

嗨人,

我遇到同樣的情況,我必須在應用程序在運行時發生崩潰時將崩潰數據發佈到開發服務器 - 它對我們跟蹤開發問題的應用程序性能很有幫助 - 有什麼選擇? i)如果我們使用TRy/catch,那麼它不可能用Try/Catch Block寫入所有視圖代碼?

所以ther的一些庫,你可以在你的appDelegate類中聲明 - 它會提醒你在應用程序的任何部分發生崩潰/錯誤。

我們寫我們自己的圖書館人的新嘗試這個 -

http://code.google.com/p/plcrashreporter/

0

我不確定,但我認爲你可以試試@try@catch。但使用它在你手中。

try/catch塊會捕獲異常並阻止它在callstack中向上傳播。

這個想法是,你在你知道如何處理它的地方捕捉它,然後你有機會執行代碼來應對異常。

這不是一個神奇的解決方案,可以防止任何事情,這正是我上面所說的。你對例外做什麼是重要的。

另外,是的,在某種程度上,您可以通過添加try/catch塊來防止程序崩潰,但是您唯一能成功的方式是從用戶隱藏崩潰,然後讓程序繼續運行。 「崩潰」並不總是可以忽略的,或者說,它們通常是不安全的。

如果你正在尋找如何避免程序崩潰一些包羅萬象的建議,這是我的建議是:

  • 寫一個程序參考

    是正常工作

Can the try...catch mechanism be used to avoid memory crashes?

+0

我想如果他能找到放在哪裏嘗試和趕上塊,他肯定能找到並修復這些崩潰是最理想的方式。 – Krishnabhadra 2011-04-25 06:12:09

+0

7KV7 ,,你試試tryCatch將會徒然:)這個答案不會被標記爲答案 – 2011-04-25 06:28:18

1

您可以處理你的應用程序崩潰以下列方式

NSArray* testArray = [[NSArray alloc] init]; 

@try 
{ 
    // Attempt access to an empty array 
    NSLog(@"Object: %@", [testArray objectAtIndex:0]); 

} 
@catch (NSException *exception) 
{ 
    // Print exception information 
    NSLog(@"NSException caught"); 
    NSLog(@"Name: %@", exception.name); 
    NSLog(@"Reason: %@", exception.reason); 
    return; 
} 
@finally 
{ 
    // Cleanup, in both success and fail cases 
    NSLog(@"In finally block"); 
    // Show alert to user 

    UIAlertView *crashAlert = [[UIAlertView alloc] initWithTitle:@"FAILED" 
                message:@"Sorry. error occured" 
                delegate:self 
                cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 
    [crashAlert show]; 

}