2012-06-19 11 views
11

Recentemente ho iniziato a studiare Objective-C e sto lavorando su un'app iOS come esercizio, comunque, voglio gestire l'overflow generando un'eccezione (provengo da uno sfondo Java), I ho cercato il riferimento c'è solo NSException, ma poi ho letto nella sezione che dice argomenti sulla gestione delle eccezioni, e hanno detto di usare NSError, ho letto il riferimento ma avevano lo stesso protocollo e metodi, quindi qual è la differenza tra loro? E quale è meglio?Errore/eccezione personalizzata NSException e NSError

Inoltre, voglio creare la mia propria eccezione o classe di errore, ci sono metodi o campi che dovrei includere? (Come quando si implementa l'interfaccia Exception in Java). Grazie

risposta

21

NSError è progettato per errori irreversibili e recuperabili. I problemi che sono stati progettati per essere acquisiti da un errori utente (o sono errori che possono essere presentati all'utente), possono essere spesso recuperati da (quindi -presentError: e NSErrorRecoveryAttempting) e di solito sono previsti o prevedibili errori (come cercare di aprire un file a cui non si ha accesso o provare a convertire tra stringhe di stringhe incompatibili).

NSException è progettato per errori programmatori potenzialmente fatali. Questi errori sono progettati per segnalare potenziali difetti nell'applicazione in cui non sono state verificate correttamente le pre-condizioni per l'esecuzione di alcune operazioni (come provare ad accedere a un indice di array che è oltre i limiti, o tenta di mutare un oggetto immutabile). L'introduzione allo Exception Programming Guide lo spiega un po '.

+0

Oh, ok. Quindi per la gestione dell'overflow dovrei usare Exception, dal momento che è un difetto nella mia applicazione? –

+1

Sì, se si tratta di una situazione imprevista che non dovrebbe verificarsi con il codice corretto. –

+0

Ohh Grazie, ma per quanto riguarda la seconda parte della domanda, creando la mia classe Exception? –

Problemi correlati