2009-03-18 10 views
5

Tengo curiosidad, ¿cómo la mayoría de ustedes manejan errores como solicitudes de tipo HTTP Forbidden o 5xx desde un servidor? ¿O decir que se lanza una excepción en uno de tus UIViewControllers? ¿Suele generar el error en el delegado de la aplicación y manejar los errores genéricos de nivel de "ventana" en ese punto? ¿Combinan errores directamente en UIViewController? ¿Qué sucede si tiene varios UIViewController que hablan todos en un contenedor NSURLConnection común y una conexión falla por algún error similar HTTP 4xx o HTTP 5xx? ¿Normalmente generarás el error al delegado de la aplicación para que pueda presentar un UIAlertView desde esa parte de la aplicación?Manejo de errores de Mac OSX/iPhone en el delegado de la aplicación?

Solo me pregunto qué solución está usando para sus técnicas de manejo de errores de Mac OSX/iPhone.

Gracias un montón.

Respuesta

2

Su controlador de vista actual debe ser responsable de enviar cualquier mensaje de error y tratar el resultado.

La última parte es la clave aquí. Si encuentra un error HTTP y pasa el mensaje al delegado de su aplicación con una opción de "reintento", la respuesta debe volver al controlador. Todo esto se pone un poco asqueroso.

Ahora es posible que desee crear una clase/vista común en su aplicación que pueda ocuparse de todos los errores que pueda encontrar, pero esto aún debe presentarse (de forma modal) por el controlador que encuentra el error y es este controlador que debe recibir respuestas delegadas.

2

Los controladores pueden necesitar o no tener que saber que ha habido un error para recuperarse correctamente de un error de red, pero para el desarrollo de iPhone he encontrado que es útil tener una clase de comunicaciones central que entienda todas las comunicaciones y fuera del sistema, y ​​cuando detecta fallas emite una alerta directamente. De esta forma, puede evitar una sobrecarga de avisos de falla si un usuario cambia de pestaña o se mueve de la aplicación, y solo genera un mensaje para que el usuario pueda entender por qué las pantallas no se actualizan.