¿Es buena programación tener un tipo de retorno de Excepción?

Esta no es realmente una pregunta sobre Java, es una pregunta sobre ESQL.

ESQL es capaz de hacer frente a las excepciones de Java que se lanzan a través de JNI al código ESQL, debe obtener un error BIP2917.

Inicialmente pensé que esto podría haber sido un problema con el solucionador de métodos ESQL pero en IIB v9 pude llamar con éxito al siguiente método:

public static void sayHello() throws Exception{
  System.out.println("hello");
}

¿Esto me hace pensar que quizás hay algo más mal con su definición de función / procedimiento externo ESQL?

Respuesta 1

El punto aquí es que no puedes DECLARAR que se lanzará una excepción; aún puede lanzar una RuntimeException, sin agregar una cláusula throws.

Entonces, si envuelve su JAXBException en una RuntimeException, puede lanzarla y manejarla de acuerdo con sus requisitos, sin romper ninguno de los requisitos. No estoy seguro si haría eso; Sin embargo, no me gustaría devolver un tipo de excepción, ya que no está destinado a ser utilizado como código de retorno.

Asegúrese de que esta forma asincrónica de manejar el problema no rompa la biblioteca ESQL, ya que omitirá parte de su código, posiblemente dejando parte de él colgando.

Respuesta: 2

La excepción de devolución es "rápida y sucia". Puede ser muy poderoso y útil, pero esto debe evitarse si es posible.

La invocación en ESQL se realiza así por una buena razón que no explicaré aquí, pero puede omitirla utilizando RuntimeException que no aparece en la definición del método.

Respuesta: 3

Un caso de uso que especifica lanzar una excepción suena como si estuviera mal escrito. ¿Cuál es el motivo comercial o arquitectónico para lanzar una excepción?

Una alternativa sería lanzar una RuntimeException o una subclase personalizada. Eso le permitiría dejarlo fuera de la firma del método.

Nuevamente, el caso de uso parece extraño.

Respuesta: 4

La respuesta directa a su pregunta es:

No, no es buena programación tener un tipo de excepción de retorno. El mecanismo está destinado a suceder cuando algo sale mal, por lo tanto, un tipo de retorno de Excepción significa que desea recibir la consecuencia de algo que salió mal.

Entiendo que no puedes lanzar Exception, por lo que debes manejar el caso con otro enfoque.

El enfoque booleano está bien cuando desea verificar algún trabajo: bueno = devolver verdadero, malo = devolver falso.

La encapsulación de valores en un objeto se entiende cuando desea obtener los resultados del trabajo: bueno = devolver nuevo YourResultObject (val1, val2, ..., valx), malo = devolver nulo.

Respuesta: 5

Estoy usando un DelayQueue. Necesito usar esto para tomar solo de la cola cuando haya pasado un retraso. También quiero imponer una capacidad, como un BlockingQueue. Parece que no puedo encontrar una colección ...

Estoy tratando de escribir un método que tome una Cadena, busque Ints en ella y luego las agregue. por ejemplo: String s = "five5six66" debería devolver 5 + 66 = 71 o: String s = "...

Quiero establecer la fecha y la hora en mi aplicación de Android. La fecha debe ser la fecha de hoy, pero la hora debe establecerse a las 6:00 a.m. de forma predeterminada en el campo de texto. He leído muchos enlaces, pero la mayoría de ellos muestra hoy ...

Estoy construyendo una función genérica que recibe un RDD y hace algunos cálculos al respecto. Como ejecuto más de un cálculo en el RDD de entrada, me gustaría almacenarlo en caché. Por ejemplo: public JavaRDD <...