Używam menedżera obiektów programu Restkit do obsługi dobrych uchwytów moich zdalnych wywołań interfejsu API.Obsługa serwerów NSA w usłudze Restkit:
Wyrzuca NSAssert za szeroki zakres błędów. Na przykład, jeśli serwer zwróci stronę błędu, w przeciwieństwie do dobrze sformułowanego json, podniesie ona NSAssert, nawet jeśli nie ma w tym nic złego.
Istnieje kilka rzeczy, jestem zagubiony (z których większość ma do czynienia z ogólną obsługę wyjątków i nsasserts)
Jak powinniśmy traktować te NSAsserts błędy? Na przykład, chcielibyśmy spróbować ponownie kilka razy, a następnie pokazać komunikat "coś poszło nie tak". (w przeciwieństwie do awarii aplikacji)
Próbowałem użyć bloku catch-try, aby złapać błędy (kod poniżej), ale błędy nie zostały przechwycone. Moja aplikacja po prostu zawiedzie. Ponadto, nie jestem wygodne przy użyciu try-catch w trybie zwolnienia mimo to.
Tylko dla mojego zrozumienia, dlaczego Restkit użytku NSAsserts, w przeciwieństwie do innych awarii
Bardzo dziękuję za pomoc - mile widziane!
// code to catch NSAssert that sharedManager throws
@try{
[sharedManager loadObjectsAtResourcePath:self.resourcePath delegate:self];
}
@catch (NSException *ex) {
NSLog(@"exception caught");
}
IME, ludzie (w tym ja) używają twierdzeń, ponieważ jest to łatwe, nie dlatego, że jest to dobra obsługa błędów. Kod produkcyjny nie powinien mieć asercji, które zawodzą, ponieważ serwer zwrócił śmieci; kod biblioteki * naprawdę * nie powinien. Możesz wypróbować '#define NS_BLOCK_ASSERTIONS 1' i zobaczyć, co się stanie ... –