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 --- 22_errors2.zig | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 22_errors2.zig (limited to '22_errors2.zig') diff --git a/22_errors2.zig b/22_errors2.zig new file mode 100644 index 0000000..fcfd391 --- /dev/null +++ b/22_errors2.zig @@ -0,0 +1,30 @@ +// +// A common case for errors is a situation where we're expecting to +// have a value OR something has gone wrong. Take this example: +// +// var text: Text = getText('foo.txt'); +// +// What happens if getText() can't find 'foo.txt'? How do we express +// this in Zig? +// +// Zig let's us make what's called an "error union" which is a value +// which could either be a regular value OR an error from a set: +// +// var text: MyErrorSet!Text = getText('foo.txt'); +// +// For now, let's just see if we can try making an error union! +// +const std = @import("std"); + +const MyNumberError = error{ TooSmall }; + +pub fn main() void { + var my_number: ??? = 5; + + // Looks like my_number will need to either store a number OR + // an error. Can you set the type correctly above? + my_number = MyNumberError.TooSmall; + + std.debug.print("I compiled!", .{}); +} + -- cgit v1.2.3-ZIG