Iphone 如何查看UIWebView loadHTMLString:中的错误?
如果Apple在loadHTMLString过程中遇到错误,他们会将它们抛出到一个单独的线程中,没有stacktrace(在Xcode4中),也没有输出到控制台 您如何倾听这些错误,调试它们,并最终对它们作出反应 (仅供参考-我使用loadHTMLString是因为我需要混合加载本地和远程资源,而这种方法提供了唯一简单的方法,AFAIAA) 编辑:…抱歉,需要澄清的是:苹果可能会遇到不同的错误。例如,如果它在尝试加载嵌入式资源(例如CSS文件)时出错,它不会将其视为“页面加载失败”,事实上它会报告页面加载成功Iphone 如何查看UIWebView loadHTMLString:中的错误?,iphone,uiwebview,Iphone,Uiwebview,如果Apple在loadHTMLString过程中遇到错误,他们会将它们抛出到一个单独的线程中,没有stacktrace(在Xcode4中),也没有输出到控制台 您如何倾听这些错误,调试它们,并最终对它们作出反应 (仅供参考-我使用loadHTMLString是因为我需要混合加载本地和远程资源,而这种方法提供了唯一简单的方法,AFAIAA) 编辑:…抱歉,需要澄清的是:苹果可能会遇到不同的错误。例如,如果它在尝试加载嵌入式资源(例如CSS文件)时出错,它不会将其视为“页面加载失败”,事实上它会报
我想。。。这是正确的行为:如果HTML解析器能够从错误中恢复,我不希望“页面加载失败”。但是错误仍然很重要-它们告诉我们页面呈现的原因,例如没有背景图像,或者图像已损坏。尽管我没有使用
loadHTMLString:
,您应该能够将控制器注册为UIWebViewDelegate
,并实现–webView:didFailLoadWithError:
方法,该方法应在失败时调用。为您的webView分配一个委托,并在委托中使用此方法
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"Error is %@",error);
}
出于调试目的,您可以附加Safari Web Inspector。为此:
据我所知,以编程方式执行此操作的唯一方法(例如,如果要重试失败的页面加载)是使用NSURLProtocol子类。这不起作用。仅当整个网页加载失败时调用,而不是在加载过程中遇到非致命错误时调用。当网络/wifi不可用时,是否调用此委托方法?这不起作用。只有当整个网页无法加载时才会调用它,而不是在加载过程中遇到非致命错误时。哦,我看到了问题所在,我没有像我所说的那样使用loadHTMLString的太多经验,但我想不出使用公共API的其他方法:/yeah,这有点奇怪。我猜最好的方法是某种“全局异常处理程序”——但我以前在Ojb-c中没有这样做过(我只是猜测这是可能的?),正如最初的问题:我们通常需要“反应”它们。调试器本身没有什么用处:(.啊,我很害怕。在这种情况下,您必须编写一个NSURLProtocol子类来检测静态文件加载失败的时间:。我将在本周末用一个示例更新答案。而且,嗯,哇,我第一次回答时没有注意到这个问题的年龄…对此表示抱歉。:)