Curso de Objective C: Switch y Manejo de excepciones
Switch
Esta sentencia nos va a permitir realizar una condicional múltiple respecto al valor de una variable, pongamos un ejemplo:
En este caso estamos inicializando una variable entera j a 0. Y luego en el switch ponemos entre () la variable j. Esto significa que será la variable que evaluaremos para saber exactamente que valor tiene. Empezará a comprobar por el primer caso, que estamos comprobando si su valor es 1. Si es así ejecutará el bloque de código que hay justo después, incluyendo el break, Por lo tanto si su valor es 1 sacará un mensaje por consola y saldrá del switch, ya que el break funciona de una manera similar a los bucles.
Con el segundo caso pasará lo mismo si j vale 2 entrará en el bloque de código del caso 2.
Con el default para algo parecido, si no ha encontrado el valor entre los anteriores casos, se ejecutará el bloque de código que haya después del default. En este caso sacando un mensaje por la consola, indicando que no ha encontrado el valor entre el resto de los casos.
Manejo de excepciones
- Try: o el Mundo de la piruleta: donde todo el mundo es feliz y todo se ejecutará. Es como cerrar los ojos e imaginarnos que todo saldrá bien. Es decir que todo lo que pongamos dentro del try se intentará hacer, sea o no posible. Falle o no falle realizas en intento de ejecutarlo.
- Catch: o el mundo del cenizo: este bloque de código se ejecutará si algo falla, mientras que se genere una excepción de código en tiempo de ejecución que cumpla con el tipo de datos que pongamos en la condición del catch. El tipo de excepción más genérico es el NSException.
- Finnaly: De todas maneras… : Independientemente de si algo falla en el Try o no. Siempre se ejecutará el bloque de código que haya dentro del finally, si lo incluimos ya que esta parte de la sentencia es opcional.
Veamos un ejemplo de la sintaxis:
Esto sería una sentencia try-catch completa. Después de cada parte se incluye un bloque de código que va {}. En el catch como puede verse, tenemos una condición. En este caso es la excepción más genérica de todas, así que independientemente de qué excepción se de siempre se ejecutará esa parte del código.
Veamos un ejemplo más completo:
En este caso tenemos un array de tres posiciones del 0 al 2 y dentro del try intentamos acceder a la cuarta posición, que no existe. en este caso nos sacará los siguientes mensajes por pantalla:
Como podemos ver nos salta una excepción del tipo NSRangeException, lógico porque nos hemos ido de rango con el índice del array. Con la propiedad reason, nos indica el porqué.
Referencias
- Oficial: https://developer.apple.com/library/ios/documentation/cocoa/conceptual/Exceptions/Exceptions.html#//apple_ref/doc/uid/10000012-BAJGFBFB
- Tipos de Excepciones: https://developer.apple.com/library/ios/documentation/cocoa/conceptual/Exceptions/Concepts/PredefinedExceptions.html#//apple_ref/doc/uid/20000057-BCIGHECA
Comments