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});
}
}