2012-08-17 113 views
1

是否可以防止應用程序崩潰?防止應用程序崩潰

在很多應用程序中,我經歷了許多崩潰,但有時很難找到崩潰的原因,並且找到解決方案變得非常耗時。

我只是想知道是否有任何代碼片段可以給你什麼是崩潰的原因,或者我們可以使用@ try- @ catch來阻止它。

如果可以通過@ try- @ catch避免,那麼我應該在哪裏放置try-catch?

+4

'它變得如此繁瑣和時間consuming' - 哦,親愛的!這並不是尋找所有產品的好理由! – 2012-08-17 12:14:39

+0

異常使你的代碼崩潰的原因 - 異常表明這樣一個根本性的失敗,沒有合理的方式來恢復異常。 – 2012-08-17 12:28:08

+0

如果你想對經驗豐富的開發人員使用的技巧提出一些建議,可以閱讀以下回復:http://stackoverflow.com/a/11944253/96716 – 2012-08-17 13:47:59

回答

12

可以通過分析崩潰,診斷原因以及編寫或修改代碼來防止崩潰,從而防止崩潰。

不幸的是,軟件開發不僅僅是最初的輸入。測試和錯誤修復是您花費大部分時間的地方。如果這對你來說太乏味,我推薦一個不同的職業,因爲這就是這樣。

+0

我很感謝你的回答丹,但我只是想知道應用程序崩潰是否可以知道哪一點它崩潰發生? – iNeal 2012-08-17 12:34:09

+0

@Neal NSException在中止應用程序之前打印堆棧跟蹤 - 它將被打印到控制檯。此外,調試器將突出顯示拋出異常的代碼行。 – 2012-08-17 13:02:08

9

我一直在尋找這個解決方案。 可以使用以下方法打印更具描述性的跡線。我認爲這可以幫助找到正確的理由。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{  
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);  
} 

void uncaughtExceptionHandler(NSException *exception) { 

    NSLog(@"CRASH: %@", exception); 
    NSLog(@"Stack Trace: %@", [exception callStackSymbols]);   
} 

無法防止應用程序崩潰。但是我們可以使用它來獲取更詳細的跟蹤日誌。我接受我的問題被錯誤地詢問並且未被清除。抱歉不清楚。

我再次花時間在此。最後,我得到了文章和演示,它將在您的應用中捕獲您的例外或BAD_ACCESS。因此,這對於所有開發人員在其應用程序中提供諸如SUBMIT BUG等功能都非常有幫助,因此,無論何時,如果用戶有任何異常,他們都可以繼續或退出或向開發人員提交崩潰報告。它真的很有幫助。我將在我的所有項目中實施。

以下是文章由馬特·加拉格爾

http://cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html

感謝馬特·加拉格爾。

2

您可以使用try-catch-finally塊,以避免應用程序崩潰如下:

-(void)functionInsideWhichAppIsCrashing 
    { 

     @try 
    { 
     //Your crashing code goes here 
    } 

    @catch (NSException *e) 
    { 
    NSLog(@"Crash Reason:@"%@", [e reason]); 
       } 

@finally {// Do whatever you want to do in crash situation 
        } 



}