Swift – Manejo de errores

El manejo de errores es una respuesta a los errores enfrentados durante la ejecución de una función. Una función puede arrojar un error cuando encuentra una condición de error, detectarlo y responder adecuadamente. En palabras simples, podemos agregar un controlador de errores a una función para responder sin salir del código o de la aplicación. 

Aquí discutiremos las salidas retenidas cuando se lanza un error y no. El siguiente es un ejemplo de una función canThrowAnError() con un controlador de errores implementado fuera del bucle en Swift. 

Ejemplo 1:

func canThrowAnError() throws 
 { 
 // This function may or may not throw an error 
}

do { 
try canThrowAnError() 
// no error was thrown 
}
 
catch { 
// an error was thrown 
}

Recuerda que throws es una palabra clave que indica que la función puede arrojar un error cuando se la llama. Dado que puede arrojar un error, debemos agregar la palabra clave try al principio cuando se llama a la función. Los errores se propagan automáticamente fuera de sus ámbitos actuales, a menos que los controle la cláusula catch. Propaga los errores a una o más cláusulas catch.

escenario del mundo real

Caso 1: Tirará un error: Si la función arrojará un error si el cinturón de seguridad no está abrochado o si el combustible está bajo. Debido a que startCar() puede arrojar un error, la llamada a la función está envuelta en una expresión de prueba. Cuando una función se envuelve en una función do, se propagará a las cláusulas proporcionadas si se produce algún error.

Caso 2: No arrojará un error: si se llama a la función. Si se produce un error y coincide con el caso carError.noSeatBelt, se llamará a la función blinkSeatBeltSign(). Si se genera un error y coincide con el caso carError.lowFuel, se llama a la función goToFuelStation(_:) con el valor [String] asociado capturado por el patrón catch.  

Demostremos ahora el caso anterior en el mismo lenguaje de programación:

Ejemplo 2:

func startCar() throws 
 { 
   // Insert the body of the function here  
}

do 
{ 
 try 
 startCar() 

 turnOnAC() 
} 

catch carError.noSeatBelt 
{
 blinkSeatBeltSign() 
} 

catch carError.lowFuel(let fuel) 
{ 
 goToFuelStation(fuel) 
}

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *