Regla general de cuándo se debe anunciar una excepción y cuándo se debe manejar

Tengo un método xque llama a otro método dentro que se llama yque arroja una excepción MyException. En este momento tengo 2 opciones, ya sea para anunciar mi método xcon la excepción MyException... como

public void x() throws MyException {
// call to y
}

(ya que yse anuncia con una throwscláusula como esta ...)

public void y() throws MyException {
// code
}

o ajustar la llamada a ymi método xen try catch block y manejarlo? Me gusta esto..

public void x() {
 try {
   // call to y
 } catch (MyException e) {
   // handle exception
 } 
}

¿Cuál es la regla del pulgar?

Respuesta 1

Si su método puede mantener el contrato con sus interlocutores, independientemente de la excepción, entonces la excepción es algo que puede y probablemente debería manejar.

Si una persona que llama se confundiría al descubrir que dijo "do x", y hubo un problema interno con la parte "y" de hacer "x", porque "x" realmente no se realizó, entonces debe exponer el excepción (o alguna otra excepción que tenga una MyExceptioncausa).

Y - considere si la persona que llama puede manejar razonablemente la excepción, o si hay alguna razón para que el programa continúe, y si la respuesta es negativa, considere usar un RuntimeExceptiono Error, respectivamente.

Eso es lo que yo diría, de todos modos.

Respuesta: 2

Estoy tratando de crear una aplicación de Android que haga una llamada a una página de PHP en mi sitio web. Después de una investigación en línea, noto que Android no tiene ese soporte. He encontrado algunas soluciones ...

El cliente Java puede conectarse al servidor C ++ usando TCP. El cliente Java está en Win7. El servidor C ++ está en Linux. El problema es que no puedo enviar datos correctamente al servidor C ++. El código Java es: ...

Tengo algo como esto en mi archivo de manifiesto: necesito un receptor para la situación en que se conectó una fuente de alimentación y el otro receptor para la fuente desconectada. <receptor android: name = "....

Estoy trabajando en un analizador para un lenguaje simple usando JavaCC. En mi sección de declaración de tokens, tengo algo como esto <CONSTANTE: <INTEGER> | <FLOAT_NUMBER> | <BOOLEANO> & ...