error_return_trace.zig (519B) - Raw
1 pub fn main() !void { 2 try foo(12); 3 } 4 5 fn foo(x: i32) !void { 6 if (x >= 5) { 7 try bar(); 8 } else { 9 try bang2(); 10 } 11 } 12 13 fn bar() !void { 14 if (baz()) { 15 try quux(); 16 } else |err| switch (err) { 17 error.FileNotFound => try hello(), 18 } 19 } 20 21 fn baz() !void { 22 try bang1(); 23 } 24 25 fn quux() !void { 26 try bang2(); 27 } 28 29 fn hello() !void { 30 try bang2(); 31 } 32 33 fn bang1() !void { 34 return error.FileNotFound; 35 } 36 37 fn bang2() !void { 38 return error.PermissionDenied; 39 } 40 41 // exe=fail