2009-03-03 15 views
5

Chcę napisać kod do obsługi wyjątków, gdy połączenie HTTP nie powiedzie się. Używam następujących kodów:Jak wyświetlić alert, gdy połączenie HTTP nie powiedzie się na telefonie 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"); 
} 

Ale program po prostu zawiesza się, gdy połączenie się nie udaje. Jak pozwolić, aby alert pojawił się bez awarii programu?

+0

Czy to działa w głównym wątku lub wątku tła? Manipulowanie obiektami interfejsu użytkownika * w wątkach w tle zwykle nie działa. Poza tym, w której linii odbywa się awaria? Użyj debuggera lub przesuń linię NSLog, aby się dowiedzieć. –

Odpowiedz

3

Nic nie jest oczywiście nie tak z Twoim kodem, będziesz musiał podać więcej informacji.

Upewnij się, że masz breakpoint on objc_exception_throw, a następnie uruchom program pod debugerem. Następnie możesz określić, w której linii zostanie zgłoszony wyjątek.

Dziki domysł, ale być może [error localizedDescription] lub [error localizedFailureReason] powraca nil.

+0

Metoda "didFailWithError" nie została wywołana, gdy użyję nieprawidłowego adresu URL. Jakieś pomysły, dlaczego tak się dzieje? –

+0

Może to nie zawodzi? Jeśli otrzymasz odpowiedź od serwera, * myślę, * że liczy się to jako sukces, nawet jeśli jest to odpowiedź 404 Not Found. – benzado

+0

Nie faliling with wrong url? Jak dodać ostrzeżenie o nieprawidłowym adresie URL? Chodzi mi o to, z której metody powinienem skorzystać? –

Powiązane problemy