2012-05-02 10 views
5

मेरे पास एक UIViewController है जिसमें UIWebView है जिसका उपयोग मैं विभिन्न दस्तावेज़ देखने के लिए कर रहा हूं। कभी-कभी एक दस्तावेज़ लोड होने का प्रयास कर सकता है जो UIWebView (उदा। पुरानी एक्सेल 2.0 शीट) द्वारा समर्थित नहीं है। वर्तमान में यह डीबग विंडो में आउटपुट का कारण निम्नानुसार है:आईओएस 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 

यहाँ आप preemptively वेब दृश्य में लोड किया जा रहा से फाइल बंद करो और एक clueless खाली स्क्रीन से बच सकते हैं।

(Am यकीन नहीं अगर वहाँ ताकि आप इसे पर नजर रखने के सकता है मक्खी पर NSLog उत्पादन को पढ़ने के लिए एक रास्ता है लेकिन यह शायद यह करने के लिए एक सही तरीका नहीं है।!)

अद्यतन: बस के बारे में एक बग दायर इस। चलिए देखते हैं कि ऐप्पल डेवलपर्स को इस पर क्या कहना है।