0Pricing
Zig Academy · レッスン

エラーセットと!Tユニオン

エラーを第一級の値として扱います。

「エラーセットと!Tユニオン」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。

エラーは値である

Zigには例外がありません。エラーは関数が返せる通常の値にすぎないため、失敗がコード上で明確になります。

エラーセットを宣言する

エラーセットは、発生する可能性のあるエラーを名前付きでまとめたものです。問題が起きた場合の種類をenumのように列挙します。

const FileError = error{
    NotFound,
    PermissionDenied,
};

1つのエラーを参照する

エラーセットの各メンバーにはドットでアクセスします。FileError.NotFoundは、返すことのできる具体的な1つのエラーです。

return FileError.NotFound;

匿名エラーセット

常に名前が必要とは限りません。error{Empty}とインラインで書くと、使用箇所にその場限りの小さなエラーセットを作成できます。

return error.Empty;

感嘆符はエラーの可能性を表す

型の!はエラーユニオンを作ります。その前の型が成功時の値で、代わりにエラーが現れることもあります。

FileError!u32

!Tを読み解く

!u32は、u32またはエラーとして読み取れます。1つの値が両方の結果を持つため、呼び出し側はどちらかを処理する必要があります。

ユニオンの2つの側

エラーユニオンは実行時に正確に2つの形を取ります。型Tの有効なペイロード、またはセット内のいずれかのエラーです。両方になることはありません。

感嘆符の前にセットを置く

!の左側にエラーセットを置くと、許可されるエラーを正確に指定できます。これにより、失敗の内容が型に直接記録されます。

fn parse(s: []const u8) FileError!u32 {
    // ...
}

エラーセットを結合する

2つのエラーセットに対する||演算子は、それらを1つに結合します。これにより、関数は複数の発生元のエラーを同時に許可できます。

const AllError = FileError || NetError;

anyerrorはスーパーセット

組み込みのanyerrorには、考えられるすべてのエラーが含まれます。便利ですが名前付きセットの正確さが失われるため、慎重に使ってください。

fn risky() anyerror!void {}

セットが役立つ理由

エラーが型に含まれるため、コンパイラーは関数が生成しうるすべての失敗を把握できます。未処理のまま見逃すことはありません。

確認問題

関数の型がFileError!u32だとします。これは何を表しますか?

まとめ

エラーセット、!Tユニオン、||によるセットの結合、anyerrorについて学びました。エラーは型システムが追跡する通常の値です。✅

よくある質問

「エラーセットと!Tユニオン」レッスンは無料ですか?

はい。「エラーセットと!Tユニオン」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。

「エラーセットと!Tユニオン」で何を学びますか?

エラーを第一級の値として扱います。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Zig Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「エラーセットと!Tユニオン」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このZig Academyレッスンでコードを書いて実行できますか?

はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. エラーセットと!Tユニオン
  2. 関数からエラーを返す
  3. tryで失敗を伝播させる
  4. 推論されるエラーセット
← Zig Academyに戻る