Cómo configurar una operación por defecto cada vez que un bloque catch conseguir ejecutado?

Zartof:

Para propósitos de depuración quiero que mi aplicación Java para cargar un archivo de registro en mi MySqlbase de datos cada vez que una catchse ejecuta la cláusula, independientemente de la excepción.

La peor de las soluciones que pensé que era añadir mi método de subida en cada uno catchen mi código (como ya lo hice para la creación de mi archivo de registro). Esto obviamente no es elegante método, el código siempre se repite. Así que mi pregunta es: que existe alguna manera (tal vez en propiedades de proyecto) para establecer una operación por defecto para ser ejecutado cada vez que una catchse cumple la cláusula?

ItFreak:

Una opción sería utilizar un marco de registro (no importa si se escribe este su auto o usar una solución existente), por lo que puede hacer:

try{}
catch(Exception e) {Logger.logExceptionToDatabase(e); }

En este se podría manejar la carga en su base de datos. Sin embargo yo no thinkt que es muy útil para cargar los registros de error en su base de datos cada vez que un catchbloque es ejecutado. Me gustaría escribir a registros de texto separadas y les recoger y sólo les persistir a una base de datos de vez en cuando o por petición del usuario.

A la pregunta misma: Esto no es posible, sin embargo hay un finallybloque que es ejecutado después del acuerdo tryde bloque (siempre y cuando la JVM no se termina dentro del bloque try). Tal vez usted podría introducir alguna TransactionResulty hacer un registro para cada éxito y el fracaso, y que lo hacen:

TransactionResult transactionResult;

try{
//do work and at the last line in the try after each operation that could 
have failed has been executed set your transactionResult variable
transactionResult = new SuccessTransaction();
}
catch(Excpetion e) { transactionResult=  new FailureTransaction();}
finally {Logger.logTransaction(transactionResult); }

y las clases de acuerdo:

public interface TransactionResult{
  public void writeLog();

} 

y un ejemplo de un resultado de transacción:

public class SuccessTransaction implements TransactionResult{
private String resultStatus;

public SuccessTransaction() { this.resultStatus = "success"; }

public void writeLog() { System.out.println(this.resultStatus); } //or whatever you want to do with your result

}

Igual va para la instancia de fracaso.

Actualizar

Como ha afirmado que hay muchas excepciones, también se podía dejar pasar el Excepción a su concreto FailureTransactiony que simplemente escribir ese mensaje o recoger todas las fallas en una lista y luego se puede rastrear las excepciones que se han disparado.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=200807&siteId=1
Recomendado
Clasificación