0Pricing
Zig Academy · レッスン

tryで失敗を伝播させる

1つのキーワードでエラーを上位へ伝播します。

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

処理の記述は繰り返しになる

失敗する可能性のある呼び出しのたびに、エラーを転送するif-elseを書くと、すぐにコードが煩雑になります。Zigにはtryキーワードという省略方法があります。

tryはアンラップするか返す

失敗する可能性のある呼び出しの前にtryを置きます。成功時は値を渡し、エラー時はそのエラーを現在の関数から返します。

const n = try parse(input);

単なる糖衣構文

この1行は、エラーを捕捉して自分で返す処理とまったく同じです。tryが定型コードを書いてくれます。

const n = parse(input) catch |e| return e;

関数も失敗可能でなければならない

tryはエラーを返す可能性があるため、それを含む関数にもエラーユニオンの戻り値の型が必要です。そうでなければコンパイラーに拒否されます。

fn run() !void {
    const n = try parse(input);
}

複数のtryを連鎖させる

複数のtry呼び出しを続けて配置できます。それぞれが失敗時に関数を早期終了させるため、正常な処理の流れを上から下へ読めます。

const f = try open(path);
const data = try read(f);

式の途中でtryを使う

より大きな式の中にtryを直接配置できます。アンラップされた値は、そのまま周囲の呼び出しや計算に渡されます。

const total = base + try parse(input);

voidを返す呼び出しでtryを使う

呼び出しが!voidを返す場合でも、tryを使って失敗を転送できます。値は返されず、エラー時に早期returnするだけです。

try file.writeAll(data);

エラーは呼び出しスタックを上る

すべての層でtryを使うと、深い場所で発生した失敗は、どこかの呼び出し側が処理を決めるまで伝播していきます。

読みやすい正常系

大きな利点は明快さです。エラーの転送が1つのキーワードに集約されるため、主要なロジックを中心に読めます。

tryは処理するものではない

tryはエラーを転送するだけで、エラーから回復することはありません。ローカルで対応する場合はcatchを使います。

転送するタイミング

失敗への対応を呼び出し側に任せるのが適切な場合はtryを使います。中間にある関数の多くは、エラーを上へ渡すだけです。

確認問題

関数内にtry doThing()と書きました。doThingがエラーを返すと、どうなりますか?

まとめ

tryは成功時にアンラップし、それ以外ではエラーを返すことを学びました。catchして転送する処理の省略形であり、コードを簡潔に保てます。✅

よくある質問

「tryで失敗を伝播させる」レッスンは無料ですか?

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

「tryで失敗を伝播させる」で何を学びますか?

1つのキーワードでエラーを上位へ伝播します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「tryで失敗を伝播させる」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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