ziglings/exercises/023_errors3.zig

29 lines
642 B
Zig
Raw Normal View History

2021-01-30 20:00:32 -05:00
//
// One way to deal with error unions is to "catch" any error and
// replace it with a default value.
//
// foo = canFail() catch 6;
//
// If canFail() fails, foo will equal 6.
//
const std = @import("std");
2021-02-15 16:55:44 -05:00
const MyNumberError = error{TooSmall};
2021-01-30 20:00:32 -05:00
pub fn main() void {
2023-06-22 05:41:41 -04:00
const a: u32 = addTwenty(44) catch 22;
2024-01-10 02:52:58 -05:00
const b: u32 = addTwenty(4) catch 22;
2021-01-30 20:00:32 -05:00
std.debug.print("a={}, b={}\n", .{ a, b });
2021-01-30 20:00:32 -05:00
}
// Please provide the return type from this function.
// Hint: it'll be an error union.
2024-01-10 02:52:58 -05:00
fn addTwenty(n: u32) MyNumberError!u32 {
2021-01-30 20:00:32 -05:00
if (n < 5) {
return MyNumberError.TooSmall;
} else {
return n + 20;
}
}