【发布时间】:2018-02-12 12:06:15
【问题描述】:
我正在尝试编写一小部分cordova ios 应用程序。我的要求之一是提供一个按钮/链接以允许用户使应用程序崩溃。
我尝试在 CDVUIWebViewNavigationDelegate.m 中引发异常,如下所示,
- (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURL* url = [request URL];
if([url.path containsString:@"CRASH"])
{
NSLog(@"User crash bookmart with NSException");
NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
NSDate *current = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
[dateFormatter setDateStyle:NSDateFormatterMediumStyle]; // Set date and time styles
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
NSString *currentTime = [dateFormatter stringFromDate:current];
[userInfo setObject:@"Crash Time" forKey:currentTime];
NSException *ex = [[NSException alloc] initWithName:@"BookmartCrashException" reason:@"User crashed bookmart!" userInfo:userInfo];
[ex raise];
}
...
}
但是当我尝试时,我看到了以下日志,
2017-09-04 17:09:57.148 HRent[96124:12077045] 带有 NSException 的用户崩溃 bookmart 2017-09-04 17:09:57.149 HRent[96124:12077045] *** WebKit 在 >webView:decidePolicyForNavigationAction:request:frame:decisionListener:delegate: User crashed bookmart 中丢弃了一个未捕获的异常!
异常已被丢弃,应用程序没有崩溃:(
有没有其他方法可以让应用程序崩溃?或者通过某些配置,我可以禁用 WebKit 以丢弃此类异常吗?
非常感谢您的回答!
问候 雷切尔
【问题讨论】:
-
如果您提供的功能会导致应用崩溃,您的应用将被 App Store 拒绝。为什么需要这样的功能?
-
我不会将此样本发布到真实市场。这只是我们用于监控混合应用程序的产品示例。
-
如果你想使应用程序崩溃而不是尝试这个.. 取一个空数组并打印其 objectAtIndex 任何值。它会使应用程序崩溃
-
Nirav 的解决方案不起作用。 : (
-
尝试创建一个空数组并访问索引 0。应用程序会因索引超出范围异常而崩溃。
标签: ios objective-c cordova custom-error-handling