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:

        int j=0;
        
        switch (j) {
            case 1:
                NSLog(@»La variable j vale 1″);
                break;
            case 2:
                NSLog(@»La variable j vale 2″);
                break;
            default:
                NSLog(@»La variable j no ha entrado en ninguno de los casos»);
                break;

        }

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

Con el manejo de excepciones trataremos de gestionar un fallo crítico de la aplicación en el caso de que algo sea probable que pueda fallar. Para ello tendremos tres bloques principales de código:
  • 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:

        @try {
            //Mundo de la piruleta donde cualquier cosa puede fallar
        }
        @catch (NSException *exception) {
            // Mundo del cenizo, donde algo ha fallado
        }
        @finally {
            // Código que se ejecutará en cualquiera de los casos

        }

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:

        NSArray *coches = @[@»Honda Civic»,
                               @»Nissan Versa»,
                               @»Ford F-150″];
        int indiceSeleccion = 3;
        @try {
            //Mundo de la piruleta donde cualquier cosa puede fallar
            NSString *coche = coches[indiceSeleccion];
            NSLog(@»The selected car is: %@», coche);
        }
        @catch (NSException *exception) {
            // Mundo del cenizo, donde algo ha fallado
            NSLog(@»Tipo del fallo:%@»,exception.name);
            NSLog(@»Causa:%@», exception.reason);
        }
        @finally {
            // Código que se ejecutará en cualquiera de los casos
            NSLog(@»En cualquiera de los casos!»);
        }

        

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:

2014-03-15 11:48:53.904 03_estructuras_de_control_bucles[4442:303] Tipo del fallo:NSRangeException
2014-03-15 11:48:53.904 03_estructuras_de_control_bucles[4442:303] Algo ha fallado:*** -[__NSArrayI objectAtIndex:]: index 3 beyond bounds [0 .. 2]

2014-03-15 11:48:53.904 03_estructuras_de_control_bucles[4442:303] En cualquiera de los casos!

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

Comments

Leave a Reply

*

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Categorías de Cursos

RSS Cursos de Desarrollo

  • Introducción a las PWA (Progressive Web Apps) 21/02/2020
    Las PWA se han convertido es una alternativa a las aplicaciones web para colonizar de una manera más eficiente los móviles debido a que pueden funcionar de manera offline y optimizar el rendimiento de la aplicación desde el móvil. Si quieres enterarte de cómo crearlas, de los pros y contras no te pierdas el último […]
  • Introducción al Testing Web 10/02/2020
    Hemos publicado en nuestro canal de Youtube un vídeo grabado durante las clases de un curso de Python Avanzado. El tema es el de Testing Opensource hablado sobre la teoría de Testing, indicando los distintos tipos de pruebas e identificando las herramientas que se usan a la hora de probar una web.
  • Entrevista a Alejandro López CEO de Slimbook 10/02/2020
    Esta semana hemos entrevistado en República Web, a Alejandro López, CEO de Slimbook. Hablamos de sus productos y sobre equipos para desarrolladores, diseñadores web, fotógrafos, editores de vídeo y data scientist. Te lo vas a perder?
  • Gadgets para el formador itinerante: Router Wifi de Viaje 08/02/2020
    Muchas veces los formadores y profesionales itinerantes tenemos el problema de tener que conectarnos a Internet desde hoteles o cafeterías para seguir haciendo nuestro trabajo, en esta entrada veremos un router wifi de viaje muy interesante que he estado utilizando desde hace un tiempo y que me ha dado muy buenos resultados. Como todo en […]
  • Balanceadores de Carga 27/01/2020
    Dentro de la arquitectura web necesitamos cumplir con dos condiciones si queremos que nuestra arquitectura sea suficientemente sólida: Alta Disponibilidad y Alto Rendimiento, en esta entrada veremos cómo cumplir con estos dos principios. La alta disponibilidad trata de conseguir que un servicio tenga el máximo posible de tiempo de disponibilidad, es decir, que el servicio […]
  • Serie de Artículos de Docker 13/01/2020
    En esta entrada veremos cómo manejar Docker, en una serie de artículos explicativos. No te los pierdas He instalado Docker, ¿Y ahora qué? Docker Compose, para cuando quieres arrancar varios contenedores de manera coordinada
  • ¿Que Frameworks de Frontend son los más utilizados en el millón de páginas del Top de Alexa? 09/01/2020
    Partiendo de la idea del blog de de Andros, y del post sobre su estudio del uso de WordPress con un ejemplo de Clojure. He iniciado un proyecto secundario sobre el uso de las tecnologías usadas en las, más de 1.000.000 principales webs de Internet según Alexa. La idea, es la de ampliar la publicación […]
  • Artículos de administración de Servidores 08/01/2020
    Esta serie de artículos nos permiten saber cómo se instala y se configura un servidor desde cero: Nuevo Servidor NAS reciclado Acceso a servidor de la oficina desde fuera gracias a dinaip Configuración de un firewall de manera sencilla en Debian/Ubuntu
  • ¿Cuál es el uso de WordPress en los principales sitios de Internet según Alexa? 14/12/2019
    Empezamos con nuestra serie de publicaciones sobre tecnologías concretas que más se usan en Internet, en este caso con WordPress. ¿Quieres saber cómo es de importante y cuánto se utiliza? No te pierdas esta entrada.
  • Estudio de Uso de Tecnologías en el millón de páginas más vistas según Alexa 13/12/2019
    Partiendo de la idea del blog de de Andros, y del post sobre su estudio del uso de WordPress con un ejemplo de Clojure. He iniciado un proyecto secundario sobre el uso de las tecnologías usadas en las, más de 1.000.000 principales webs de Internet según Alexa. La idea, es la de ampliar la publicación […]

Si estás interesado en seguir formándote tenemos una serie de cursos gratuitos: http://cursosdedesarrollo.com/cursos/

También disponemos de algunos cursos de pago por si son de tu interés: https://cursosdedesarrollo.com/tienda/

Curso de Angular: https://cursosdedesarrollo.com/tienda/angular/

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información. ACEPTAR

Aviso de cookies