Del curso: Domina Swift: Nivel 2

Cómo hacer que una closure, parámetro de una función, lance un error - Tutorial de Swift

Del curso: Domina Swift: Nivel 2

Cómo hacer que una closure, parámetro de una función, lance un error

¿Cómo hacer que una closure, parámetro de una función, lance un error? Voy a hacer una función calculoCostoso, a la que le voy a pasar una operación, un cálculo. Este cierre va a poder lanzar errores, por lo tanto, igual que a las funciones, le ponemos la palabra clave throws. Vamos a hacer que no devuelva nada. Ahora podemos manejar de alguna manera los errores dentro de nuestra función calculoCostoso o podemos propagarla. Vamos a propagarla con throws y lanzamos try calculo. Vamos a lanzar esta función y, en el cierre, voy a hacer un print, «Realizando cálculo». El compilador nos pide manejar el error, a pesar de que sabemos que este cierre nunca nos va a dar un error. Es un simple print. En estos casos, podemos usar rethrows. Y el beneficio de esto es que, como nuestra closure utilizada en esta llamada calculoCostoso no puede lanzar ningún error, no hace falta utilizar try, ya que el compilador identifica que el cierre no lanza errores. En caso de que tengamos un error, voy a crear un error custom, ErrorCalculo, solo con un caso, error, y voy a lanzar calculoCostoso, voy a coger un valor random del 1 al 5 y, en caso de que x sea un 2, voy a lanzar el error. ErrorCalculo.error. En esta llamada de calculoCostoso, obtenemos un error de compilación. Como el cierre puede lanzar un error, tenemos que marcar calculoCostoso con try y manejar el error, por ejemplo, con un do-catch. Voy a hacer un print y voy a mostrar el error. Hacer que una closure que se pase como parámetro pueda lanzar errores es muy sencillo. Añadimos la palabra clave throws como en cualquier función. Además de esto, hemos aprovechado para hablar de rethrows, que es importante conocer en este contexto y se usa para indicar que lanza un error solo si uno de sus parámetros de función lanza un error.

Contenido