tengo una gran cantidad de código repetitivo que, básicamente, sigue este patrón:anotación de Java para envolver un método
function doSomething() {
try {
[implementation]
[implementation]
[implementation]
[implementation]
} catch (Exception e) {
MyEnv.getLogger().log(e);
} finally {
genericCleanUpMethod();
}
}
Me encantaría crear mi propia anotación a limpiar mi código un poco:
@TryCatchWithLoggingAndCleanUp
function doSomething() {
[implementation]
[implementation]
[implementation]
[implementation]
}
Las firmas de método varían enormemente (dependiendo de la implementación real del método), pero la pieza de prueba/captura/finalmente es siempre la misma.
La anotación que tengo en mente se ajuste automáticamente el contenido del método anotado con todo el alboroto try...catch...finally
.
He buscado alto y bajo de forma directa para hacer esto, pero no he encontrado nada. No sé, quizás no puedo ver el bosque de todos los árboles anotados.
Cualquier puntero sobre cómo podría implementar tal anotación sería muy apreciado.
Me parece que una anotación no sería necesaria para esto; puedes pasar implementaciones que definen 'implementationOfDoSomething()' y (opcionalmente, quizás) 'genericCleanUpMethod()' como argumentos a 'doSomething()', llámalos dentro del 'try/catch/finally', y luego solo invocas' doSomething() 'siempre que necesites la lógica repetitiva? –
Tu respuesta está en AOP, ¿has investigado esto? – smp7d
Según tengo entendido, tiene este mismo try/catch/finally en múltiples métodos. Así que no hay solo un doSomething, sino más bien como doSomething1, doSomething2, ... todo con el mismo try/catch/finally que él quiere extraer de la anotación – jeff