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