Qual è l'uso principale di NSAssert vs. NSException. Cosa è più raccomandato e quando?Qual è l'uso principale di NSAssert vs. NSException
risposta
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.
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.)
- 1. Qual è la differenza tra objc_exception_throw e [NSException raise]?
- 2. errore strano NSAssert
- 3. Come sapere se NSAssert è disabilitato nelle versioni di rilascio?
- 4. Qual è il "principale" in Spring Security?
- 5. NSException con Tkinter su mac
- 6. Errore/eccezione personalizzata NSException e NSError
- 7. Nessuna traccia di stack da NSAssert
- 8. Perché non questo NSAssert con stringWithFormat è compilato?
- 9. Come puoi sapere qual è l'attività di lancio principale?
- 10. ANDROID: Qual è l'idea principale dell'uso di strings.xml?
- 11. Qual è il vantaggio principale dell'utilizzo di eval() in JavaScript?
- 12. Qual è l'uso principale di Python integrato in "compilazione"?
- 13. Qual è la differenza tra colorWithSRGBRed vs colorWithDeviceRed vs colorWithCalibratedRed
- 14. javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie, Qual è la differenza?
- 15. node.js vs. mete.js qual è la differenza?
- 16. mb_strpos vs strpos, qual è la differenza?
- 17. Qual è rowID & ROWNUM (ROWID vs ROWNUM)
- 18. $ dirty vs $ invalid: Qual è la differenza?
- 19. Qual è Kestrel (vs IIS/espresso)
- 20. EQU vs DC.B. Qual è la differenza?
- 21. Permetti vs Stub, qual è la differenza?
- 22. Shim vs. Sham: Qual è la differenza?
- 23. Database vs tablespace, qual è la differenza?
- 24. Qual è lo scenario principale da utilizzare Socket.IO
- 25. Qual è l'alternativa Java principale a ASP.NET/PHP
- 26. Qual è la principale differenza tra cetrioli e shoulda?
- 27. Qual è lo scopo principale della proprietà List.single?
- 28. Applicazione console C#: metodo principale valore di ritorno VS Application.ExitCode
- 29. Swift: terminazione con eccezione non rilevata di tipo NSException
- 30. Chiusura con eccezione non rilevata di tipo NSException?
Grazie. Questo aiuterà – Niraj