Introducción
Java utiliza sentencias de control para hacer que el flujo de ejecución avance o se bifurque en función de los cambios de estado en el programa. Las sentencias de control se clasifican en los siguientes grupos:
- De selección
- De iteración
- De salto
Además, para los errores no detectados en la compilación, existe el bloque try{...} catch{...} finally{...} para gestionar todos los posibles errores que aparezcan durante la ejecución del programa.
1.- Selección
Estas sentencias controlan el flujo de ejecución en función de condiciones conocidas durante el tiempo de ejecución.
Java admite estas sentencias de selección:
1.1 If
Permite ejecutar un conjunto de sentencias si se cumple la expresión de comparación.
1.1.1 If else
En caso de que la primera expresión de comparación no se cumpla, salta a la siguiente.
1.1.2 If elseif else
Se utiliza para incluir más expresiones de comparación.
1.2 Switch
Permite comparar la misma expresión con distintos valores en cada caso. Cada case necesita terminar con un break, sino se ejecutan todos los case que van a continuación hasta llegar a un break o el final del switch. Existe default (que es opcional) para gestionar los valores que no se encuentren en ninguna sentencia case.
2.- Iteración
Estas sentencias nos permiten crear bucles que nos permiten realizar un mismo proceso varias veces.
Las sentencias para realizar bucles son:
2.1 For
Permite ejecutar un conjunto de sentencias si se cumple la expresión de comparación.
2.2 While
En caso de que la primera expresión de comparación no se cumpla, salta a la siguiente.
2.3 Do while
Permite comparar la misma expresión con distintos valores en cada caso. Cada case necesita terminar con un break, sino se ejecutan todos los case que van a continuación hasta llegar a un break o el final del switch. Existe default (que es opcional) para gestionar los valores que no se encuentren en ninguna sentencia case.
3.- Salto
Estas sentencias transfieren el flujo de ejecución a otra parte del programa.
Son las siguientes:
3.1 Break
La sentencia break sirve para romper el flujo de control de forma que la ejecución salta a la siguiente sentencia. También se utiliza para salir de una sentencia etiquetada, por ejemplo: break nombreSentencia;
3.2 Continue
Esta sentencia debe estar siempre dentro de al menos un bucle, ya que permite transferir el control a otro bucle con nombre o etiqueta.
3.3 Return
Esta sentencia se utiliza para salir de un bucle o de un método. Si la función devuelve alguna variable, este valor debe ponerse a continuación del return.
4.- Try - Catch - Finally
Este bloque se utiliza en Java para la gestión de errores. Es posible que algunos problemas no hayan sido detectados y surjan durante la ejecución.
Para estos problemas aparece Exception, que es un cierto tipo de error que se ha producido después de la compilación.
Algunas excepciones son fatales y provocan que se deba finalizar la ejecución del programa. En este caso conviene terminar ordenadamente y dar un mensaje explicando el tipo de error que se ha producido.
Para esto existe el bloque try-catch-finally. Si se produce un error y se lanza este bloque como consecuencia de una excepción, el control pasa al bloque catch que se hace cargo de la situación y decide lo que hay que hacer.
Se pueden incluir todos los bloques catch como se quiera, cada uno con un tipo de excepción.
Finalmente, si está presente, se ejecuta el bloque finally, que es opcional, pero es recomendable siempre ya que se ejecuta siempre, sea cual sea el tipo de error.
En caso de que el código de un método pueda generar una Exception y no se quiera incluir en dicho método la gestión del error, es necesario que el método pase la Exception al método desde el que ha sido llamado, y esto se consigue añadiendo la palabra throws seguida del nombre de la Exception concreta, después de la lista de argumentos del método.
Así, el método superior deberá incluir los bloques try-catch o volver a pasar la Exception. De esta forma se puede ir pasando la Exception de un método a otro hasta llegar al último método del programa.