Added ex 21-26 for error handling
This commit is contained in:
parent
08ec029f20
commit
2de8a8c54d
7 changed files with 241 additions and 0 deletions
46
21_errors.zig
Normal file
46
21_errors.zig
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
//
|
||||
// Believe it or not, sometimes things to wrong in programs.
|
||||
//
|
||||
// In Zig, an error is a value. Errors are named so we can identify
|
||||
// things that can go wrong. Errors are created in "error sets", which
|
||||
// are just a collection of named errors.
|
||||
//
|
||||
// We have the start of an error set, but we're missing the condition
|
||||
// "TooSmall". Please add it where needed!
|
||||
const MyNumberError = error{
|
||||
TooBig,
|
||||
???,
|
||||
TooFour,
|
||||
};
|
||||
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() void {
|
||||
var nums = [_]u8{2,3,4,5,6};
|
||||
|
||||
for (nums) |n| {
|
||||
std.debug.print("{}", .{n});
|
||||
|
||||
const number_error = numberFail(n);
|
||||
|
||||
if (number_error == MyNumberError.TooBig) {
|
||||
std.debug.print(">4. ", .{});
|
||||
}
|
||||
if (???) {
|
||||
std.debug.print("<4. ", .{});
|
||||
}
|
||||
if (number_error == MyNumberError.TooFour) {
|
||||
std.debug.print("=4. ", .{});
|
||||
}
|
||||
}
|
||||
|
||||
std.debug.print("\n", .{});
|
||||
}
|
||||
|
||||
// Notice how this function can return any member of the MyNumberError
|
||||
// error set.
|
||||
fn numberFail(n: u8) MyNumberError {
|
||||
if(n > 4) return MyNumberError.TooBig;
|
||||
if(n < 4) return MyNumberError.TooSmall; // <---- this one is free!
|
||||
return MyNumberError.TooFour;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue