El 14 de septiembre de 2017, publicamos una versión revisada de nuestra Política de privacidad. Tu uso continuado de video2brain.com significa que aceptas este documento revisado, por lo que te recomendamos que dediques unos minutos a leerlo y comprenderlo.

Aprende Swift 3

Captura de errores con do, try y catch

Prueba ahora LinkedIn Learning sin cargo y sin compromiso.

Prueba gratis Mostrar modalidades de suscripción
Do, try y catch nos van a permitir capturar los posibles errores en tiempo de ejecución. Aunque no siempre debemos usarlos, a veces cuando diseñamos un API es importante utilizarlos con sabiduría y precaución.

Transcripción

Todo lenguaje tiene un sistema de manejo de excepciones. En 'Swift' tenemos un manejo de excepciones que es muy diferente al de 'Objective-C'. En 'Objective-C' creábamos un apuntador a un tipo 'NSError', se lo pasabamos a la función que podía arrojar la excepción y una vez que terminaba la ejecución de esa función, evaluábamos si el apuntador al 'NSError' tenía algún contenido. En caso de que no, significaba que todo había salido correctamente. Esto lo hacíamos porque como estabamos encima de 'C', era la forma más rápida y eficiente que podíamos tener para poder capturar elementos que estuvieran fuera de nuestra función. En 'Swift' ahora, tenemos un bloque 'do-try-catch'. Para este ejemplo, en nuestro 'Playground' vamos a crear una constante llamada 'URL' y vamos a crear una instancia de 'URL' con el constructor 'File URL with path'. Le voy a pasar una cadena vacía y le voy a decir que no es un directorio. Muy bien, ahora, yo ya sé que esa 'URL' no existe así que, lo que voy a hacer es provocar un error. Voy a crear una variable "data" en la cual esté utilizando un constructor de la clase "data" que se llama 'Contents off' y si te fijas, tiene aquí una palabra que dice 'Throws', quiere decir que este constructor puede arrojar una excepción. ¿Por qué pensarías que puede arrojar una excepción? Bueno, pues porque puede ser que la 'URL' que le estás pasando no sea válida y ese es nuestro caso, Si te fijas, aquí nos va a arrojar un error en tiempo de compilación y se oye, tu llamada puede arrojar alguna excepción y no la estás capturando. Hay una manera muy sencilla de poder quitar este error y es básicamente colocando la palabra 'try' y el signo de interrogación. La palabra reservada 'try' lo que hace, en realidad, es envolver el resultado en un opcional. "data "en realidad nos regresaría un objeto de tipo "data", pero al envolverlo dentro de nuestra sintaxis de 'try' con el signo de interrogación, nos está devolviendo un opcional del objeto "data". Por lo tanto, voy a necesitar ahora desenvolver la variante "data" si la quiero utilizar más adelante. Pero esta no es la única manera en que puedo capturar los errores de una función que arroja una excepción. Por ejemplo, tú podrías escribir un bloque 'do-try-catch' y este bloque, en realidad, tiene todo lo necesario para poder capturar la excepción. Dentro del bloque 'DU', lo que hacemos es ejecutar la misma función pero sin el signo de interrogación; esto indicaría que "data" no va a ser un elemento opcional sino que ya va a ser un elemento completamente formado de "data". En todo caso que no sea así, vamos a caer en la parte de 'catch' en donde asigno "data", esto me lo permite porque estoy indicando que "data" es de tipo 'data optional'. Por otro lado, si tuviéramos aquí algún tipo de error, podríamos indicar qué tipo de error quiero capturar. Por ejemplo: 'My error invalid path' y de esta manera, podríamos capturar solamente ese error y si es cualquier otro entonces, va a tener un efecto burbuja, subiendo en todas las llamadas de las funciones que nos estén ejecutando en ese momento. Pero no solamente podemos capturar los errores en 'Swift', también los podemos generar. A veces, cuando estamos diseñando 'APIs' lo que necesitamos es darle más información al programador que nos está utilizando, acerca de cuáles son los errores que tuvimos a la hora de tratar de hacer la tarea que nos pidió en nuestra función. Para eso, vamos a necesitar crear un enumerador, este enumerador tiene que heredar de 'error' porque en realidad, 'error' es del tipo 'NSError' que nosotros utilizábamos en 'Objective C' y eso hace que todo se vuelva compatible. Lo siguiente es que podemos generar nuestra función de una manera muy rápida y sencilla indicando que nuestra función puede arrojar una excepción. En este caso, estoy indicando un método que recibe un 'path' que es de tipo cadena y que puede arrojar una excepción, ¿cuál? No lo sabe y en realidad, nunca lo va a saber hasta que se ejecute. Una vez que indicas esto también, agregas cuál es el valor de retorno de tu función. En este caso estoy evaluando si 'path' me lo dan como una cadena vacía, ya sabes, dos comillas sin espacios ni letras. En caso de que eso sea así, voy a regresar uno de los casos específicos de mi enumeración, en este caso, le voy a decir que el 'path' está incorrecto. Con esto sería más que suficiente, en cuanto, la función llega al 'throw' va a empezar a subir la llamada y si alguien la captura en un bloque do-catch o la captura a través de un opcional, entonces va a ser válido. En este caso, si no entra a esta sentencia va a regresar la palabra 'content' y todo será correcto. Los errores son algo muy común en los sistemas y te sugiero que aprendas cómo cómo subir las excepciones para que puedas informarle a tus programadores o a tus compañeros de trabajo cuáles son las razones por las cuales tu función no pudo completarse.

Aprende Swift 3

Descubre Swift 3, la versión más actual del lenguaje de Apple; conoce todas sus novedades y aprende el lenguaje de código abierto desde cero para desarrollar tus aplicaciones.

3:14 horas (31 Videos)
Actualmente no hay comentarios.
 

Este curso video2brain está disponible como descarga y para ser visualizado online. ¡Pero no hace falta que decidas entre las dos opciones! Al comprar el curso, disfrutarás de ambas posibilidades.

La descarga te permite ver las lecciones sin estar conectado/a a internet y supone una navegación fácil y ágil entre capítulo y capítulo. Si vas a trabajar en diferentes ordenadores o si no quieres descargarte el curso completo, entra en la web con tus datos de acceso y disfruta directamente de tus vídeos online. Te deseamos que disfrutes de este curso y te resulte de mucha utilidad.

Estamos a tu disposición si tienes cualquier tipo de duda o pregunta.