5

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

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

异常 CPMessageException: (null)

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

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

非常感谢,乔纳森

4

1 回答 1

1

不幸的是 CPMessageException 是 Apple 私有框架的一部分,如果是办公文件,OfficeImport.framework。当框架接收到不可用的文件时会抛出此错误。

您的应用程序没有崩溃的原因是它可能是在导入代码本身中处理的。即使设置 NSSetUncaughtExceptionHandler 也不起作用(就像我过去尝试过的那样)。

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

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

在这里,您可以先发制人地阻止文件被加载到 Web 视图中,并避免出现毫无头绪的空白屏幕。

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

更新:刚刚提交了一个关于此的错误。让我们看看苹果开发者对此有何评论。

于 2012-09-05T09:41:15.443 回答