2009-03-03 5 views
5

Je veux écrire du code pour gérer les exceptions lorsque la connexion HTTP échoue. J'utilise les codes suivants:Comment faire pour afficher une alerte lorsque la connexion HTTP échoue sur l'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"); 
} 

Mais le programme se bloque simplement lorsque la connexion échoue. Comment laisser l'alerte surgir sans crash du programme?

+0

Est-ce que cela fonctionne dans le thread principal ou dans un thread d'arrière-plan? La manipulation des objets UI * dans les threads d'arrière-plan a tendance à ne pas fonctionner. Au-delà de cela, sur quelle ligne se situe le crash? Utilisez le débogueur ou déplacez la ligne NSLog pour le savoir. –

Répondre

3

Rien ne va manifestement mal avec votre code, vous devrez fournir plus d'informations.

Assurez-vous que vous avez un breakpoint on objc_exception_throw puis exécutez le programme sous le débogueur. Ensuite, vous pouvez déterminer sur quelle ligne l'exception est levée.

Une supposition sauvage, mais peut-être [error localizedDescription] ou [error localizedFailureReason] renvoie nil.

+0

La méthode 'didFailWithError' n'a même pas été appelée lorsque j'utilise une mauvaise URL. Des idées pour lesquelles cela arrive? –

+0

Peut-être qu'il ne manque pas? Si vous obtenez une réponse du serveur, je * pense * que cela compte comme un succès, même s'il s'agit d'une réponse 404 Not Found. – benzado

+0

Pas flou avec une mauvaise URL? Alors comment ajouter un avertissement pour une URL incorrecte? Je veux dire quelle méthode devrais-je utiliser? –

Questions connexes