typestar

Errores y try en Zig

Los errores son valores en el tipo de retorno: una bóveda que abre o dice por qué no.

const std = @import("std");

const VaultError = error{WrongCombination};

fn open(guess: u32) VaultError![]const u8 {
    if (guess == 628) return "deed to the tin mine";
    return VaultError.WrongCombination;
}

pub fn main() !void {
    // try unwraps a success or returns the error to the caller.
    const prize = try open(628);
    std.debug.print("inside: {s}\n", .{prize});
    // if with an else-capture inspects the failure instead.
    if (open(111)) |p| {
        std.debug.print("inside: {s}\n", .{p});
    } else |err| {
        std.debug.print("no luck: {s}\n", .{@errorName(err)});
    }
}

Cómo funciona

  1. error{WrongCombination} declara el conjunto de errores; ! lo mete al tipo de retorno.
  2. try open(628) desenvuelve el éxito o devuelve el error escaleras arriba.
  3. if (...) |p| ... else |err| captura el lado que de verdad ocurrió.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
20
Caracteres a escribir
553
Tokens
142
Ritmo de tres estrellas
70 tpm

Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 122 segundos.

Escribe este fragmento

Paso 1 de 3 en Errores; paso 7 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →