¿Qué es una buena práctica de tratar con algunas excepciones HTTP de tiempo de ejecución?
Tengo un pequeño método que se parece a esto:
public static void unstarTrack(Context ctxContext, String strId) { try { HttpParams htpParameters = new BasicHttpParams(); List<NameValuePair> lstCredentials = new ArrayList<NameValuePair>(); lstCredentials.add(new BasicNameValuePair("t", String.valueOf(System.currentTimeMillis() / 1000))); lstCredentials.add(new BasicNameValuePair("__call", "favourites.removeSong")); HttpPost htpPost = new HttpPost(API_URL); htpPost.setEntity(new UrlEncodedFormEntity(lstCredentials)); htpPost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0"); htpPost.addHeader("Accept-Encoding", "gzip"); DefaultHttpClient dhcClient = new DefaultHttpClient(htpParameters); HttpResponse resResponse = dhcClient.execute(htpPost); Log.d(TAG, EntityUtils.toString(resResponse.getEntity())); return; } catch (SocketException e) { throw new RuntimeException("problem with network connectivity.", e); } catch (UnsupportedEncodingException e) { throw new RuntimeException("Encoding not supported.", e); } catch (ClientProtocolException e) { throw new RuntimeException("A protocol exception was encountered.", e); } catch (ParseException e) { throw new RuntimeException("An error occurred while trying to read the header elements.", e); } catch (IOException e) { throw new RuntimeException("An error occurred while trying to read response stream.", e); }
}
- Escribir en permiso de archivo en android
- ¿Cómo crear burbujas como las de la aplicación de Google+?
- Android: No se puede invocar toString () en el tipo primitivo int
- Cómo mantener un mapa de bits en la memoria
- Android DescargarManager get filename
El método en sí es bastante simple, pero tiene un montón de excepciones que ocurren y no sé cómo debo manejarlos. Suprimirlos haciendo un simple'e.printStackTrace () 'no parece una buena idea, así que comencé a leer sobre las mejores prácticas de manejo de excepciones, pero todavía estoy un poco perdido. ¿Qué debo hacer con las excepciones?
Necesito hacer algo con mis excepciones porque no quiero devolver null
del método. Devolver un null
de mi método significa que el método que llama no tendrá ninguna idea de si una excepción ocurrió dentro de mi método.
¿Debería crear una excepción personalizada y aumentarla o debería simplemente aumentar las excepciones no comprobadas?
El método de llamada realmente no puede afectar mucho a mi método, es decir, puede ocurrir un SocketException
si hubo un problema con la conectividad de red, y una IOException
puede ocurrir si hubo un problema al leer el flujo. Lo máximo que puede hacer el método de llamada es volver a intentarlo más tarde.
Si vuelvo a lanzar todas las excepciones que he atrapado, el método de llamada sería simplemente plagado de bloques de manejo de excepciones.
(Lo siento si esto parece una pregunta trivial, simplemente estoy tratando de aprender a escribir mejor código Gracias.)
- Android Google Maps v2 no muestra el icono Compass and Location
- Conecte con los clientes de iOS y Android a SockJS Backend
- Cómo cambiar el tamaño de la navegación ver los elementos del menú y el texto ?? ¿Cómo cambiar el espacio entre el menú?
- NullPointerException - Drawable.setBounds - probablemente debido a transiciones de fragmentos
- Cajón No se muestra el cajón de navegación de salida
- Html.fromHtml (String) + problema de desviación de línea
- Obtención de un token de acceso malformado "t ype": "OAuthException", "code": 190
- Obfuscating ActionBarSherlock con Proguard
Crear una excepción dedicada, que tiene el nivel de abstracción adecuado (algo como UnstarTrackException). Lanzar una excepción, envolviendo la excepción original que capturó. De esta manera, el llamador sólo tendrá que manejar una excepción (supongo que todas las excepciones deben ser manejadas de la misma manera: retrying).
Si esta excepción debe comprobarse o no depende de su gusto. Si desea forzar a todas las personas que llaman a su método a que manejen esta excepción, haga de ella una excepción seleccionada. Si desea permitir que el llamante elija si desea manejar esta excepción o no, utilice una excepción de tiempo de ejecución.
Si este método está enterrado dentro de capas de código, y si una excepción sólo puede tratarse en la capa superior, una excepción de tiempo de ejecución es probablemente una mejor opción. Y, de hecho, a menos que sea el único llamador de este método, una excepción de tiempo de ejecución también es probablemente una mejor opción. Las excepciones comprobadas tienden a no ser utilizadas mucho hoy en día.
- La cobertura externa de Api de Android no viene
- Inyectar objeto con constructor que toma un parámetro usando RoboGuice 2