¿Qué hacer con nunca suceder, excepciones inútiles?
Tengo este código:
HttpPut put = new HttpPut(url); try { put.setEntity(new StringEntity(body, "UTF-8")); } catch (UnsupportedEncodingException e1) { // That would really not be good e1.printStackTrace(); }
En una plataforma que se sabe que soporta esa codificación.
- Android: ¿puedo evitar que una clase Java (de una biblioteca externa) sea instanciada en tiempo de ejecución
- Android en el Listener de cambio de texto
- Visibilidad de diseño y vistas en la aplicación
- Valor de preferencia personalizada de Android no guardado
- Obtención de Latitude y Longitud 0.0 en Android M
La excepción nunca se va a plantear. Nunca haré nada al respecto.
El hecho de que el código está allí todavía sugiere que existe la posibilidad de que pueda ocurrir, y que el resto del código podría ejecutarse en un estado no fiable. Pero nunca lo hará. O si lo hace, gracioso conexiones de red de reserva es el último de mis problemas.
Así que tengo este bloque inútil try catch feo. ¿Que debo hacer con eso?
(En este caso específico, no hay mucha otra opción si quiero usar StringEntity
. String.getBytes
por ejemplo, tiene un montón de métodos que aceptan un objeto Charset
, por ejemplo, evitando la necesidad de capturar la excepción, pero no StringEntity
)
- Java (Android) Insertar icono en lienzo
- ¿Sólo rellenar viewHolder con mensajes recuperados de la base de datos?
- ArrayList <CustomClass> en SharedPreferences
- TextView se bloquea al configurar texto
- El diálogo de carga de la vista Web de Android no se ha descartado
- ¿Cómo prevenir el retraso de la interfaz de usuario al actualizar la notificación al descargar el archivo?
- El título de ViewPager no aparece hasta que lo deslice
- SQLite, ¿cómo obtener todos los nombres de tablas en la base de datos?
Me gustaría lanzar algún tipo de RuntimeException
que indica que usted piensa que esto realmente nunca debe suceder. De esa manera:
- Si alguna vez sucede, lo descubres en lugar de tragarlo y continuar
- Su expectativa de que realmente nunca puede suceder está claramente documentada
Incluso podría crear su propia subclase de RuntimeException
para esto:
// https://www.youtube.com/watch?v=OHVjs4aobqs public class InconceivableException extends RuntimeException { public InconceivableException(String message) { super(message); } public InconceivableException(String message, Throwable cause) { super(message, cause); } }
También es posible que desee encapsular la operación en un método independiente, de modo que no obtenga bloques catch que llenen su código. Por ejemplo:
public static HttpPut createHttpPutWithBody(String body) { HttpPut put = new HttpPut(url); try { put.setEntity(new StringEntity(body, "UTF-8")); return put; } catch (UnsupportedEncodingException e) { throw new InconceivableException("You keep using that encoding. " + "I do not think it means what you think it means.", e); } }
A continuación, puede llamar a createHttpPutWithBody
donde quiera que lo necesite, y mantener su código principal "catch clean".
- Android: ¿Cómo llenar el color a la parte específica de la imagen solamente?
- Android cómo setOnClickListener para el botón de fragmento