2012-05-02 22 views
5

我有一個包含UIWebView的UIViewController,我正在使用它來查看各種文檔。偶爾可能會嘗試加載一個不受UIWebView支持的文檔(例如舊的Excel 2.0表單)。目前這會導致調試窗口中的輸出如下:iOS UIWebView - 加載無效文件格式的陷阱例外

異常:CPMessageException:文件格式無效。

例外CPMessageException:(空)

的webViewDidStartLoad方法火災,但既不webViewDidFinishLoad或didFailLoadWithError火災。

該錯誤不會導致應用程序崩潰,但我想捕獲此異常以向用戶提供我自己的消息。任何人都可以提出如何捕捉和處理這個問題嗎?

非常感謝, 喬納森

+0

以上都不是因爲例外引發了火災。也許你可以使用\ @try ... \ @catch來解決這個問題。 –

+0

嗨,我已經嘗試使用@try .. @繞過[webView loadRequest:]方法,但沒有任何異常被捕獲。正如我所說,它實際上並沒有導致應用程序崩潰。 –

+0

請進入產品>編輯方案..>診斷選項卡>勾選啓用殭屍對象,並顯示崩潰日誌與我們的問題已發生的代碼行 – Sakares

回答

1

不幸CPMessageException是蘋果的私有框架的一部分,在辦公文件,OfficeImport.framework情況。當框架收到不可用的文件時,會引發這種情況。

您的應用程序未崩潰的原因是因爲它可能正在導入代碼本身中處理。即使設置NSSetUncaughtExceptionHandler也不起作用(正如我以前試過的)。

去解決,這將是使用的UIWebView的shouldStartLoadWithRequest委託方法,最好的方法:

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

在這裏,你可以搶先被加載到Web視圖停止文件,避免無能空白屏幕。

(我不知道是否有一種方法來讀取上飛的NSLog輸出,所以你可以監控它,但是可能不是做一個正確的方式!)

更新:剛剛提出關於錯誤這個。讓我們看看蘋果開發人員在這方面要說些什麼。