推論されるエラーセット
エラーの収集をZigに任せます。
「推論されるエラーセット」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
エラーの列挙は面倒
関数が返す可能性のあるエラーをすべて名前付けするのは、特に他の失敗する可能性のある関数を呼び出す場合に面倒です。Zigはセットを推論できます。
セットを省略する
感嘆符の前に何も置かず、!Tだけを書きます。Zigが関数本体を調べ、生成しうるすべてのエラーを判断します。
fn parse(s: []const u8) !u32 {
// ...
}コンパイラーが収集する
本体内の各tryと返される各エラーが自動的に集められ、その関数の推論された1つのエラーセットになります。
if (s.len == 0) return error.Empty;正確さが保たれる
後から失敗する可能性のある呼び出しを追加すると、推論されたセットもそのエラーを含むように広がります。手書きのリストを更新し忘れることはありません。
呼び出しをまたいだ推論
関数内で別の失敗する可能性のある呼び出しにtryを使うと、その呼び出し先が返しうるエラーも推論されたセットに組み込まれます。
const f = try open(path);明示的なセットが適する場合もある
固定された公開契約が必要な場合もあります。!の前にセットを指定すると、その外部のエラーを禁止できます。推論ではこの制約は行われません。
fn load() FileError!Data {}1行でわかるトレードオフ
推論されたセットは便利で自動更新され、明示的なセットは正確で安定しています。契約を固定する必要があるかどうかで選びます。
@errorReturnTraceで調べる
実行時にもエラーについて考えることができます。デバッグビルドでは、Zig が失敗の開始箇所を示す エラーリターントレース を保持します。
内部ヘルパーに最適
推論は、厳密なパブリック API が必要ないプライベートヘルパー関数で特に役立ちます。そこでの 付随情報の管理 は Zig に任せられます。
完全なチェックは維持される
推論を使う場合でも明示する場合でも、すべてのエラーは呼び出し側で処理する必要があります。推論によって入力の手間は減りますが、安全性は変わりません。コンパイラーは厳格なままです。
実用的なデフォルト
多くの Zig 関数は単に !T を使い、推論に任せます。名前付きセットは、固定したい境界で使うとよいでしょう。
クイックチェック
ある関数が戻り値の型として !u32 を宣言し、エクスクラメーションマークの前にエラーセットを指定していないとします。Zig はどうするでしょうか。
まとめ
裸の !T によるエラーセットの推論、関数本体に応じたエラーセットの拡張、そして明示的なセットを選ぶべき場面について学びました。✅
よくある質問
「推論されるエラーセット」レッスンは無料ですか?
はい。「推論されるエラーセット」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「推論されるエラーセット」で何を学びますか?
エラーの収集をZigに任せます。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「推論されるエラーセット」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- エラーセットと!Tユニオン
- 関数からエラーを返す
- tryで失敗を伝播させる
- 推論されるエラーセット