1234567891011121314151617181920212223242526272829303132333435363738 |
- //
- // 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 detect().
- // 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;
- }
|