エラーセットと!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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エラーセットと!Tユニオン
- 関数からエラーを返す
- tryで失敗を伝播させる
- 推論されるエラーセット