2009-03-03 4 views
5

Desidero scrivere un codice per gestire le eccezioni quando la connessione HTTP non riesce. Io uso i seguenti codici:Come avvisare quando la connessione HTTP non funziona su iPhone?

-(void) connection:(NSURLConnection *)connection 
    didFailWithError: (NSError *)error { 
    UIAlertView *errorAlert = [[UIAlertView alloc] 
        initWithTitle: [error localizedDescription] 
        message: [error localizedFailureReason] 
        delegate:nil 
        cancelButtonTitle:@"OK" 
        otherButtonTitles:nil]; 
    [errorAlert show]; 
    [errorAlert release]; 
    [activityIndicator stopAnimating]; 
    NSLog (@"Connection Failed with Error"); 
} 

Ma il programma si blocca solo quando la connessione non riesce. Come far apparire l'avviso senza crash del programma?

+0

È in esecuzione nel thread principale o in una thread in background? La manipolazione degli oggetti dell'interfaccia utente * nei thread in background tende a non funzionare. Oltre a ciò, su quale linea si verifica l'incidente? Usa il debugger o sposta la linea NSLog in giro per scoprirlo. –

risposta

3

Nulla è ovviamente sbagliato nel codice, è necessario fornire ulteriori informazioni.

Assicurarsi di disporre di un breakpoint on objc_exception_throw e quindi eseguire il programma sotto il debugger. Quindi puoi determinare su quale linea viene lanciata l'eccezione.

Un'ipotesi selvaggia, ma forse [error localizedDescription] o [error localizedFailureReason] restituisce nil.

+0

Il metodo 'didFailWithError' non è stato nemmeno chiamato quando uso un URL errato. Qualche idea per cui questo accade? –

+0

Forse non sta fallendo? Se ricevi una risposta dal server, I * think * conta come un successo, anche se si tratta di una risposta 404 non trovata. – benzado

+0

Non faliling con l'URL errato? Quindi come aggiungere un avviso per l'URL errato? Intendo quale metodo dovrei usare? –

Problemi correlati