From 2de8a8c54d7090dd063bed8b6b283c2fcb452e43 Mon Sep 17 00:00:00 2001 From: Dave Gauer Date: Sat, 30 Jan 2021 20:00:32 -0500 Subject: Added ex 21-26 for error handling --- 23_errors3.zig | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 23_errors3.zig (limited to '23_errors3.zig') diff --git a/23_errors3.zig b/23_errors3.zig new file mode 100644 index 0000000..6060bf1 --- /dev/null +++ b/23_errors3.zig @@ -0,0 +1,28 @@ +// +// 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"); + +const MyNumberError = error{ TooSmall }; + +pub fn main() void { + var a: u32 = addTwenty(44) catch 22; + var b: u32 = addTwenty(4) ??? 22; + + std.debug.print("a={}, b={}", .{a,b}); +} + +// Please provide the return type from this function. +// Hint: it'll be an error union. +fn addTwenty(n: u32) ??? { + if (n < 5) { + return MyNumberError.TooSmall; + } else { + return n + 20; + } +} -- cgit v1.2.3-ZIG