ZigはGoに似たような値ベースの例外処理を採用している。 Goと違うのは、ZigのエラーはEnumになっているという事。 try Rustでいう?。エラーをunwrapして値を返す。エラーになったらエラーを返す。以下の糖衣構文。 pub fn main() !void { const result = error_func() catch |err| return err; } if Goのif err != nil ~とかに近いもの。エラーになった場合の動作を指定できる。 pub fn main() !void { const std = @import("std"); // この時点ではエラーか値か分からない const result = error_func(); if (result) |val| { std.debug.print("Success!", .{}); } else |err| { // エラーの場合 std.log.panic("Error: {s}", .{err}); } }