如果Apple在loadHTMLString期间遇到错误,他们会将它们抛出到一个单独的线程上,没有堆栈跟踪(在Xcode4中),并且没有输出到控制台。
你如何听取这些错误,调试它们,并最终对它们做出反应?
(仅供参考 - 我正在使用loadHTMLString,因为我需要加载本地和远程资源的混合,而这种方法提供了唯一的简单方法,AFAIAA)
编辑:...抱歉,要明确:Apple可能会遇到不同的错误。例如,如果尝试加载嵌入式资源(例如CSS文件)时出错,则不会将其视为“页面加载失败”,实际上它会报告成功的页面加载。
恕我直言......这是正确的行为:如果HTML解析器能够从错误中恢复,我不希望“页面加载失败”。但错误仍然很重要 - 它们告诉我们为什么页面正在渲染,例如没有背景图像或图像损坏。
答案 0 :(得分:3)
出于调试目的,您可以附加Safari Web Inspector。为此:
它将显示页面已加载的静态文件。 (如果你想看到Javascript错误,你需要正常连接,在所有异常中设置一个断点 - 在SWI中,而不仅仅是在Xcode中! - 然后选择根级页面和CMD + R重新加载它。)
据我所知,以编程方式执行此操作的唯一方法(例如,如果要重试失败的页面加载)是使用NSURLProtocol子类。
答案 1 :(得分:1)
虽然我没有使用loadHTMLString:
,但您应该能够将控制器注册为UIWebViewDelegate
并实施– webView:didFailLoadWithError:
方法,该方法应在失败时调用。
答案 2 :(得分:0)
将委托分配给您的webview并在委托中使用此方法。
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"Error is %@",error);
}