2011-11-28 7 views

risposta

20

asserzioni sono generalmente utilizzati solo durante lo sviluppo e sono elaborate-out dell'app mentre in modalità di rilascio (ciò è controllato dal NS_BLOCK_ASSERTIONS). Le eccezioni, d'altra parte, possono essere utilizzate in ogni momento.

Quando un'eccezione viene lanciata, risalta lungo la catena di chiamate, fino a quando non viene rilevata (e segnalata, ignorata o generata un'altra eccezione) o raggiunge la cima, nel qual caso farà sì che l'app crash. Può essere considerato parte del contratto di un metodo di classe e deve essere documentato in modo che il chiamante possa gestirlo correttamente.

asserzioni sono davvero un controllo sviluppatore di runtime che assicurano che qualcosa (in genere una variabile di istanza) è in un certo stato e se non è poi abort() al fine di portare la questione all'attenzione sviluppatori. È un controllo di integrità dello sviluppatore per verificare che qualcosa sia nello stato che lo sviluppatore si aspetta che sia.

+0

Grazie. Questo aiuterà – Niraj

7

Le asserzioni sono usate per trovare cose che non dovrebbero mai accadere in nessuna circostanza se il tuo codice funziona come pensi che dovrebbe essere. Se stanno accadendo, c'è un bug nel tuo codice e vuoi saperlo, almeno se succede durante i test. (La maggior parte delle persone disattiva le affermazioni nel codice rilasciato.)

Al contrario, vengono utilizzate eccezioni per trovare le cose che sono andate storte su cui non si ha il controllo. Ad esempio, se l'applicazione dipende da un server di database e quel server di database non è disponibile, ciò potrebbe generare un'eccezione nel codice. (Non commettere l'errore di usare eccezioni per cose come la convalida dell'input dell'utente.Se è un flusso regolare del programma - l'utente ha dimenticato di entrare in un campo o qualsiasi cosa - non fa eccezione.Le eccezioni dovrebbero essere eccezionali.)

Problemi correlati