leí la recomendación de Apple en exception uso y NSError uso:Pros y contras del uso de excepción en IOS/ObjectiveC
Además, he leído varias preguntas de desbordamiento de pila similares que tratan sobre si se debe utilizar o no la excepción.
Using exceptions in Objective-C
Estoy tratando de averiguar los pros y los contras de excepción el uso como una notificación de error/método de manejo en IOS (Francamente, no soy satisfecho con la sentencia de Apple (dice qué hacer, pero no dice por qué deberíamos hacerlo):
Debe reservar el uso de excepciones para programación o errores de tiempo de ejecución inesperados, como acceso a colecciones fuera de límites, intentan mutar objetos inmutables, enviar un mensaje no válido y perdiendo la conexión con el servidor de ventanas. Por lo general, se ocupa de este tipo de errores con excepciones cuando se crea una aplicación en lugar de hacerlo en tiempo de ejecución.
pros de uso Excepción:
No requiere modificar todo el código intermedio entre código de generación de error y el código de control de errores
No contamina argumentos y valores de retorno para métodos
Contras:
Para todos los códigos de memoria administrados manualmente, tendremos que tener un cuidado extra (necesitaremos envolverlo en objetos liberados automáticamente para garantizar que se liberen los recursos).
Tenemos que tener cuidado con el borde entre nuestro código y el marco. Si nuestras excepciones dejan nuestro código, podríamos tener problemas (porque los marcos pueden administrar memoria manualmente)
¿Echo de menos algo? ¿Hay contras/pros adicionales?
Parece que las excepciones deberían estar bien para el código tipo biblioteca (cuando tenemos una cantidad bastante grande de código empaquetado, que no se comunica mucho con sistemas/frameworks externos. Y parece que las excepciones son difíciles de usar para . el código que interactúa activamente con otros marcos
¿su experiencia de probar esta teoría
agradezco cualquier información adicional sobre este tema
Realmente no veo los contras. De todos modos, quieres hacer estas dos cosas, ¿verdad? – Sulthan
Diría que primero no es una estafa. Tienes que hacerlo de todos modos. En segundo lugar podría ser una especie de dolor (como entiendo que ObjectiveC (Java) no proporciona una buena manera de que el desarrollo sepa que algún método puede arrojar. Por lo tanto, es fácil agregar un método en el código de borde y olvidarlo para captar la excepción que podría arrojarse con este código. –
El problema, sin embargo, es que el límite entre el código y el código del sistema suele ser extremadamente complejo. Si usa las clases de la colección Foundation, cada uso de esas colecciones es un borde, por ejemplo, – bbum