2012-05-02 13 views
5

Ho un UIViewController contenente un UIWebView che sto usando per visualizzare vari documenti. Occasionalmente un documento può tentare di essere caricato che non è supportato da UIWebView (ad esempio il vecchio foglio Excel 2.0). Attualmente ciò causa l'output nella finestra di debug come segue:iOS UIWebView - trap eccezioni caricamento formato file non valido

eccezione: CPMessageException: il formato di file non è valido.

ECCEZIONE CPMessageException: (null) Metodo

Il webViewDidStartLoad incendi, ma né webViewDidFinishLoad o didFailLoadWithError incendi.

L'errore non arresta l'app in modo anomalo, ma mi piacerebbe intercettare questa eccezione per fornire il mio messaggio per l'utente. Qualcuno può suggerire come intrappolare e gestire questo?

Molte grazie, Jonathan

+0

Nessuno dei suddetti fuochi perché l'eccezione ha fatto fuoco. Forse puoi usare \ @try ... \ @catch per risolvere questo problema. –

+0

Ciao, ho già provato a usare @try .. @ catturare il metodo [webView loadRequest:] ma nessuna eccezione viene catturata. Come ho detto, in realtà non causa l'arresto anomalo dell'app. –

+0

Vai a Prodotto> Modifica schema ..> Scheda Diagnostica> Abilita Abilita Oggetti Zombi e mostra il registro degli arresti anomali a noi con la tua linea di codice che il problema è accaduto – Sakares

risposta

1

Purtroppo CPMessageException fa parte dei quadri private di Apple, in caso di file di lavoro, OfficeImport.framework. Questo viene generato quando il framework riceve un file inutilizzabile.

Il motivo per cui l'applicazione non si arresta in modo anomalo è perché probabilmente viene gestito nel codice di importazione stesso. Anche l'impostazione di NSSetUncaughtExceptionHandler non funzionerà (come ho provato in passato).

Il modo migliore per andare in giro sarebbe quello di utilizzare il metodo delegato shouldStartLoadWithRequest di UIWebView:

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

Qui si poteva preventivamente fermare il file venga caricato nel vista web ed evitare una schermata vuota all'oscuro.

(non sono sicuro se c'è un modo per leggere l'uscita NSLog al volo così da poter monitorare, ma che probabilmente non è un modo giusto per farlo.!)

Update: appena presentato un bug per quanto riguarda Questo. Vediamo cosa hanno da dire gli sviluppatori Apple su questo.

Problemi correlati