【问题标题】:Prevent Application Crash防止应用程序崩溃
【发布时间】:2012-08-17 12:09:14
【问题描述】:

是否可以防止应用程序崩溃?

在许多应用程序中,我遇到了很多崩溃,但有时很难找到崩溃的原因,并且找到解决方案变得非常耗时。

我只是想知道是否有任何代码 sn-p 可以告诉您崩溃原因是什么,或者我们可以使用@try-@catch 来阻止它。

如果可以通过@try-@catch 避免,那我应该如何,在哪里放置try-catch?

【问题讨论】:

  • it becomes so tedious and time consuming - 天哪!这不是寻找包罗万象的好理由!
  • 异常使你的代码崩溃是有原因的——异常表明这样一个根本性的失败,没有合理的方法来恢复 feom。
  • 如果您想对经验丰富的开发人员使用的技术提出一些建议,您可以阅读此回复:stackoverflow.com/a/11944253/96716

标签: iphone ios exception crash


【解决方案1】:

可以通过分析崩溃、诊断原因以及编写或修改代码来防止崩溃。

不幸的是,软件开发不仅仅是最初的打字。测试和错误修复是您花费大量时间的地方。如果这对你来说太乏味了,我推荐一个不同的职业,因为这就是这样。

【讨论】:

  • 感谢您的回答 Dan,但我只是想知道应用程序是否崩溃,我们能知道它在哪一点发生崩溃?
  • @Neal NSException 在中止应用程序之前打印堆栈跟踪 - 它将被打印到控制台。此外,调试器将突出显示引发异常的代码行。
【解决方案2】:

我一直在寻找这个解决方案。 可以使用以下方法打印更具描述性的跟踪。我认为这有助于找到正确的原因。

- (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

感谢马特·加拉格尔。

【讨论】:

    【解决方案3】:

    您可以使用 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
                       }
    
    
    
    } 
    

    【讨论】:

      猜你喜欢
      • 2013-05-30
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2013-03-08
      • 2011-10-13
      • 1970-01-01
      相关资源
      最近更新 更多