我的iPhone应用程序在执行期间的某个时间点崩溃。我不希望应用程序突然终止,我希望显示一条警告消息,例如“抱歉应用程序遇到错误”,并在警报视图中按下确定申请应该关闭。
我可以在appdelegate文件中使用任何异常或错误处理程序吗?
请告诉我..
谢谢你们所有人。
答案 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类中声明一些库 - 它会提醒你应用程序的任何部分发生的崩溃/错误。
我们为新人编写自己的图书馆试试这个 -