2011-04-25 142 views
-4

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

是否有任何异常或错误处理程序,我可以在我的appdelegate文件中使用?

请告诉我..

谢谢你的一个和所有。

+5

”,我希望显示一条警告消息像“抱歉,应用程序遇到错误”“ - 实际上,你真正想要的是找到并删除代码中的错误! – 2011-04-25 06:05:24

回答

-2

嗨人,

我遇到同样的情况,我必须在应用程序在运行时发生崩溃时将崩溃数据发布到开发服务器 - 它对我们跟踪开发问题的应用程序性能很有帮助 - 有什么选择? i)如果我们使用TRy/catch,那么它不可能用Try/Catch Block写入所有视图代码?

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

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

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

0

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

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

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

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

另外,是的,在某种程度上,您可以通过添加try/catch块来防止程序崩溃,但是您唯一能成功的方式是从用户隐藏崩溃,然后让程序继续运行。 “崩溃”并不总是可以忽略的,或者说,它们通常是不安全的。

如果你正在寻找如何避免程序崩溃一些包罗万象的建议,这是我的建议是:

  • 写一个程序参考

    是正常工作

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

+0

我想如果他能找到放在哪里尝试和赶上块,他肯定能找到并修复这些崩溃是最理想的方式。 – Krishnabhadra 2011-04-25 06:12:09

+0

7KV7 ,,你试试tryCatch将会徒然:)这个答案不会被标记为答案 – 2011-04-25 06:28:18

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]; 

}