Skip to content

Instantly share code, notes, and snippets.

@fitomad fitomad/never_si_return.swift Secret
Created Jun 11, 2019

Embed
What would you like to do?
/// El error que devuelve este snippet
enum FlowError: Error
{
case uncontroled
}
/// Una función normal y corriente.
/// No devuelve nada
func returningFunction() -> Void
{
print("returningFunction()")
}
/// Una función normal y corriente.
/// Devuelve una cadena de texto
func returningFunction(withParameter name: String) -> String
{
return ("returningFunction(withParameter: \(name))")
}
/// Al llamar a esta función se dejan de
/// producir las llamadas al resto de código
/// que hubieras tras la llamada a esta función
///
/// Pero como en algunos casos se lanza una excepción
/// el flujo del programa continuará con normalidad.
func neverEndingFunction() throws -> Never
{
let throwAnError = Bool.random()
if throwAnError
{
print("\n\t> ¡Error en Never! (línea: \(#line))")
throw FlowError.uncontroled
}
fatalError("No voy a devolver el control")
}
// MARK: - Test -
returningFunction()
let text = returningFunction(withParameter: "Parametro")
print(text)
do
{
try neverEndingFunction()
}
catch
{
print("\t> Si se produce una excepción el comportamiento de Never no se aplica.")
print("\t> Continuamos con la ejecución normal.\n")
}
// Esto se ejecuta sólo si se produce una excepción
// en el paso anterior
returningFunction()
let otherText = returningFunction(withParameter: "Parametro número 2")
print(otherText)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.