2012-08-17 115 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 
        } 



}