Manejo de excepciones
En Java existen dos tipos de excepciones, Exception y RuntimeException, la diferencia fundamental entre ambas, es que la primera necesita ser cachada y declarada en los métodos, la segunda no, lo cual a veces hace que nuestro métodos tengas muchas excepciones declaradas después del throws, sin embargo en Groovy todas las excepciones se manejan como Runtime, inclusive las que no lo son en Java, por ejemplo cualquier excepción IOException, no debe ser cachada ni declarada y así el resto. Muy parecido a como funcionan en .Net.
Vamos algunos ejemplos para apreciar las diferencias:
void openFileInGroovyStyle () {
println("\nException handling")
(1..3).each { print "*** " }
println("")
// No necesita ni hacer the throws en el método, o el try/catch
def reader = new FileReader ("file.txt");
}
En Java:
void openFileInJavaStyle () throws IOException {
new FileReader ("file.txt");
}
o también:
void openFileInJavaStyle () {
try {
new FileReader ("file.txt");
} catch (IOException e) {
// ...
}
}
Pienso que a veces es importante la posibilidad de exponer ciertas excepciones, sin embargo me gusta que las excepciones Java sean Runtime en Groovy, aunque me gustaría que se pudieran declarar de forma optativa algunas en la firma del método.
Una nota al pie, he encontrado algunos problemas con las excepciones, pues algunas no son cachadas en el "catch", fue reportado como un error en el Jira de Groovy, así que proba antes de solar a producción.
En Java existen dos tipos de excepciones, Exception y RuntimeException, la diferencia fundamental entre ambas, es que la primera necesita ser cachada y declarada en los métodos, la segunda no, lo cual a veces hace que nuestro métodos tengas muchas excepciones declaradas después del throws, sin embargo en Groovy todas las excepciones se manejan como Runtime, inclusive las que no lo son en Java, por ejemplo cualquier excepción IOException, no debe ser cachada ni declarada y así el resto. Muy parecido a como funcionan en .Net.
Vamos algunos ejemplos para apreciar las diferencias:
void openFileInGroovyStyle () {
println("\nException handling")
(1..3).each { print "*** " }
println("")
// No necesita ni hacer the throws en el método, o el try/catch
def reader = new FileReader ("file.txt");
}
En Java:
void openFileInJavaStyle () throws IOException {
new FileReader ("file.txt");
}
o también:
void openFileInJavaStyle () {
try {
new FileReader ("file.txt");
} catch (IOException e) {
// ...
}
}
Pienso que a veces es importante la posibilidad de exponer ciertas excepciones, sin embargo me gusta que las excepciones Java sean Runtime en Groovy, aunque me gustaría que se pudieran declarar de forma optativa algunas en la firma del método.
Una nota al pie, he encontrado algunos problemas con las excepciones, pues algunas no son cachadas en el "catch", fue reportado como un error en el Jira de Groovy, así que proba antes de solar a producción.
Comentarios