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
40
25_errors5.zig
Normal file
40
25_errors5.zig
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
//
|
||||
// Zig has a handy "try" shortcut for this common error handling pattern:
|
||||
//
|
||||
// canFail() catch |err| return err;
|
||||
//
|
||||
// which can be more compactly written as:
|
||||
//
|
||||
// try canFail();
|
||||
//
|
||||
const std = @import("std");
|
||||
|
||||
const MyNumberError = error{
|
||||
TooSmall,
|
||||
TooBig,
|
||||
};
|
||||
|
||||
pub fn main() void {
|
||||
var a: u32 = addFive(44) catch 0;
|
||||
var b: u32 = addFive(14) catch 0;
|
||||
var c: u32 = addFive(4) catch 0;
|
||||
|
||||
std.debug.print("a={}, b={}, c={}", .{a,b,c});
|
||||
}
|
||||
|
||||
fn addFive(n: u32) MyNumberError!u32 {
|
||||
//
|
||||
// This function needs to return any error which might come back from fix().
|
||||
// Please use a "try" statement rather than a "catch".
|
||||
//
|
||||
var x = detect(n);
|
||||
|
||||
return x + 5;
|
||||
}
|
||||
|
||||
fn detect(n: u32) MyNumberError!u32 {
|
||||
if (n < 10) return MyNumberError.TooSmall;
|
||||
if (n > 20) return MyNumberError.TooBig;
|
||||
return n;
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue