iOS UIWebView - 捕获加载无效文件格式的异常

时间:2012-05-02 17:27:26

标签: objective-c ios exception exception-handling uiwebview

我有一个包含UIWebView的UIViewController,我用它来查看各种文档。有时,可能会尝试加载UIWebView不支持的文档(例如,旧的Excel 2.0工作表)。目前,这会导致调试窗口中的输出如下:

异常:CPMessageException:文件格式无效。

EXCEPTION CPMessageException:(null)

将触发webViewDidStartLoad方法,但不会触发webViewDidFinishLoad或didFailLoadWithError。

错误不会使应用程序崩溃,但我想捕获此异常以便为用户提供我自己的消息。任何人都可以建议如何陷阱和处理这个?

非常感谢, 乔纳森

1 个答案:

答案 0 :(得分:1)

不幸的是,CPMessageException是Apple私有框架的一部分,办公室文件是OfficeImport.framework。当框架收到不可用的文件时抛出此内容。

您的应用程序未崩溃的原因是因为它可能正在导入代码本身中处理。即使设置NSSetUncaughtExceptionHandler也行不通(正如我过去尝试过的那样)。

解决这个问题的最佳方法是使用UIWebView的shouldStartLoadWithRequest委托方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

在这里,您可以抢先停止将文件加载到Web视图中,避免出现无能为力的空白屏幕。

(我不确定是否有办法在运行中读取NSLog输出,以便您可以监控它。但这可能不是一种正确的方法!)

更新:刚刚提交了一个有关此问题的错误。让我们看看Apple开发者对此有何看法。