如何防止iPhone应用程序突然关闭或崩溃?

时间:2011-04-25 06:02:09

标签: iphone objective-c

我的iPhone应用程序在执行期间的某个时间点崩溃。我不希望应用程序突然终止,我希望显示一条警告消息,例如“抱歉应用程序遇到错误”,并在警报视图中按下确定申请应该关闭。

我可以在appdelegate文件中使用任何异常或错误处理程序吗?

请告诉我..

谢谢你们所有人。

3 个答案:

答案 0 :(得分: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];

}

答案 1 :(得分:0)

我不确定,但我认为您可以尝试@try@catch。但是使用它在你手中。

try / catch块用于捕获异常并阻止它在callstack中向上传播。

这个想法是你在你知道如何处理它的地方捕获它,然后你有机会执行代码以响应异常。

这不是一个可以防止任何事情的神奇解决方案,这正是我上面所说的。你做的例外是重要的。

另外,是的,在某种程度上,你可以通过添加try / catch块来防止程序崩溃,但你唯一成功的就是隐藏用户的崩溃,然后让程序继续运行。 “崩溃”并不总是可以安全忽视,或者更确切地说,它们通常不容易被忽视。

如果您正在寻找一些关于如何避免程序崩溃的全能建议,请听以下建议:

  • 编写正常运行的程序

<强>参考

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

答案 2 :(得分:-2)

Hii人,

我遇到了同样的情况,当应用程序在运行时变得混乱时,我必须将崩溃数据发布到开发服务器 - 这对于我们跟踪开发人员关注的应用程序性能非常有用 - 有什么选择?

i)如果我们使用TRy / catch,那么使用Try / Catch Block在所有视图代码中写入是不可能的吗?

所以你可以在你的appDelegate类中声明一些库 - 它会提醒你应用程序的任何部分发生的崩溃/错误。

我们为新人编写自己的图书馆试试这个 -

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