¿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.

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 )

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".

  • Error al cargar CharSequence en Scala 2.11.4 y sbt 0.12.4
  • ¿Cómo obtener el último valor de BehaviorSubject?
  • Compilación de Android Only con API 20: Android 4.4 (KitKat Wear)
  • La captura de pulsaciones de teclas cuando el teléfono Android está en modo de suspensión profunda
  • Fondo transparente en ImageButton con efecto de ondulación?
  • Llame al valor de un spinner? Además, utilice otros valores basados ​​en el valor de un spinner
  • Android y Javadoc: @inheritDoc no funciona
  • Preferencias compartidas de Android TinyDB putListObject frunction
  • Error de fusión de manifiesto
  • Ejecución de pruebas Android método setUp () se llama varias veces
  • Vida útil de los objetos en Java vs .Net
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.