是否可以防止應用程序崩潰?防止應用程序崩潰
在很多應用程序中,我經歷了許多崩潰,但有時很難找到崩潰的原因,並且找到解決方案變得非常耗時。
我只是想知道是否有任何代碼片段可以給你什麼是崩潰的原因,或者我們可以使用@ try- @ catch來阻止它。
如果可以通過@ try- @ catch避免,那麼我應該在哪裏放置try-catch?
是否可以防止應用程序崩潰?防止應用程序崩潰
在很多應用程序中,我經歷了許多崩潰,但有時很難找到崩潰的原因,並且找到解決方案變得非常耗時。
我只是想知道是否有任何代碼片段可以給你什麼是崩潰的原因,或者我們可以使用@ try- @ catch來阻止它。
如果可以通過@ try- @ catch避免,那麼我應該在哪裏放置try-catch?
可以通過分析崩潰,診斷原因以及編寫或修改代碼來防止崩潰,從而防止崩潰。
不幸的是,軟件開發不僅僅是最初的輸入。測試和錯誤修復是您花費大部分時間的地方。如果這對你來說太乏味,我推薦一個不同的職業,因爲這就是這樣。
我很感謝你的回答丹,但我只是想知道應用程序崩潰是否可以知道哪一點它崩潰發生? – iNeal 2012-08-17 12:34:09
@Neal NSException在中止應用程序之前打印堆棧跟蹤 - 它將被打印到控制檯。此外,調試器將突出顯示拋出異常的代碼行。 – 2012-08-17 13:02:08
我一直在尋找這個解決方案。 可以使用以下方法打印更具描述性的跡線。我認爲這可以幫助找到正確的理由。
- (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
感謝馬特·加拉格爾。
您可以使用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
}
}
'它變得如此繁瑣和時間consuming' - 哦,親愛的!這並不是尋找所有產品的好理由! – 2012-08-17 12:14:39
異常使你的代碼崩潰的原因 - 異常表明這樣一個根本性的失敗,沒有合理的方式來恢復異常。 – 2012-08-17 12:28:08
如果你想對經驗豐富的開發人員使用的技巧提出一些建議,可以閱讀以下回復:http://stackoverflow.com/a/11944253/96716 – 2012-08-17 13:47:59