¿Cuál es el uso principal de NSAssert Vs. NSException. ¿Qué es más recomendable y cuándo?¿Cuál es el uso principal de NSAssert Vs. NSException
Respuesta
Las aserciones se utilizan generalmente solo durante el desarrollo y se compilan fuera de la aplicación cuando están en modo de lanzamiento (esto está controlado por NS_BLOCK_ASSERTIONS
). Las excepciones, por otro lado, pueden usarse en todo momento.
Cuando se lanza una excepción, retrocede en la cadena de llamadas, hasta que es capturada (y reportada, ignorada u otra excepción) o llega a la cima, en cuyo caso causará que la aplicación choque. Puede considerarse parte del contrato de un método de clase y debe documentarse para que la persona que llama pueda manejarlo correctamente.
Las aserciones son realmente un control de desarrollador de tiempo de ejecución que garantiza que algo (generalmente una variable de instancia) se encuentre en un estado determinado y si no es así, abort()
para llamar la atención de los desarrolladores. Es un control de cordura del desarrollador comprobar que algo se encuentra en el estado que el desarrollador espera que sea.
Las afirmaciones se utilizan para encontrar cosas que nunca deberían suceder bajo ninguna circunstancia si su código funciona de la manera que usted cree que debería ser. Si están sucediendo, hay un error en su código y desea saber al respecto, al menos si sucede durante la prueba. (La mayoría de las personas desactiva las afirmaciones en el código publicado.)
Por el contrario, se usan excepciones para encontrar cosas que han salido mal y sobre las que no tiene control. Por ejemplo, si su aplicación depende de un servidor de base de datos y ese servidor de base de datos no está disponible, eso podría generar una excepción en su código. (No cometa el error de usar excepciones para cosas como validación de entrada de usuario. Si se trata de flujo de programa regular, el usuario olvidó ingresar un campo o lo que sea, eso no es una excepción. Las excepciones deben ser excepcionales)
- 1. Uso de NSAssert en subprocesos
- 2. ¿Cuál es el uso principal de MarshalByRefObject?
- 3. Uso de NSException en aplicaciones de iPhone
- 4. GraniteDS vs BlazeDS ¿cuál es más uso que el otro?
- 5. ¿Cuál es el uso de la sintaxis = =?
- 6. MPI vs GPU vs Hadoop, ¿cuál es la principal diferencia entre estos tres paralelismos?
- 7. Objective-C: Assertion vs. Exception vs. Error
- 8. ¿cuál es el uso básico de alignment_storage?
- 9. ¿Cuál es el uso de "indulgente"?
- 10. ¿Cuál es el uso de Log4j API?
- 11. ¿Cuál es el uso previsto de IllegalStateException?
- 12. ¿cuál es el uso de string.Clone()?
- 13. ¿Cuál es el uso de singletonList?
- 14. ¿Cuál es el uso de - [NSUserDefaults registerDefaults:]?
- 15. ¿Cuál es el uso correcto de DataContext.Refresh()?
- 16. ¿Cuál es el uso de AtomicReferenceArray?
- 17. ¿Cuál es el uso de @SuppressWarnings
- 18. ¿Cuál es el uso correcto de EnsureChildControls()?
- 19. ¿Cuál es el uso de window.external?
- 20. ¿Cuál es el uso de LOCAL_MODULE_TAGS?
- 21. ¿Cuál es el uso de autómatas finitos?
- 22. ¿Cuál es el uso de typedef?
- 23. ¿Cuál es el uso de Indexers?
- 24. ¿Cuál es el uso de Deployment.Current.Dispatcher.BeginInvoke (() => {...})?
- 25. NSException y NSError excepción/error personalizado
- 26. JSF vs Stripes, ¿cuál es el mejor?
- 27. ¿Cuál es el uso del uso de init() en JavaScript?
- 28. Javassist. ¿Cuál es la idea principal y dónde el uso real?
- 29. error extraño NSAssert
- 30. ¿Cuál es el uso de múltiples métodos principales?
Gracias. Esto ayudará – Niraj