0Pricing
Zig Academy · レッスン

特定のエラーをswitchで処理する

返されたエラーの種類によって分岐します。

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

すべてのエラーが同じとは限らない

どの失敗にも同じ代替処理が適するとは限りません。ファイルが見つからない場合と不正な入力では、異なる処理が必要になることが多いため、発生したエラーに応じて分岐したくなります。

キャプチャしてから switch

catch でエラーをキャプチャし、それを switch に渡します。各ケースで、特定のエラーに対してそれぞれ異なる対応ができます。

open(path) catch |err| switch (err) {
    error.NotFound => create(path),
    else => return err,
};

エラーは switch の値

error.NotFound のようなエラーは通常の値なので、switch では整数や enum のタグと同じように照合されます。

switch (err) {
    error.Timeout => retry(),
    error.Denied => reportDenied(),
}

switch は網羅的でなければならない

エラーに対する switch では、セット内で発生しうるすべてのエラーを処理する必要があります。1 つでもケースが欠けていると、Zig はコンパイルを拒否します。

残りは else で処理する

else 分岐を追加すると、名前を指定していないエラーをすべて受け取れます。これにより、すべてのバリアントを列挙しなくても switch を網羅的にできます。

switch (err) {
    error.NotFound => createDefault(),
    else => return err,
}

各アームは値を返す

switch は式なので、各アームで値を生成できます。catch 全体は、該当するアームが返した値を生成します。

const n = parse(s) catch |e| switch (e) {
    error.Empty => 0,
    else => -1,
};

コンマでエラーをまとめる

同じ応答を共有する複数のエラーは、コンマで区切って 1 つのアームに列挙できます。関連するケースをすっきりまとめられます。

switch (err) {
    error.Timeout, error.Reset => retry(),
    else => return err,
}

処理できないエラーは再スローする

アーム内でエラーを return し、上位へ渡すことができます。理解できるケースは処理し、残りは呼び出し側に任せます。

else => return err,

まず try と組み合わせる

多くの場合、通常の処理には try を使い、独自のロジックが本当に必要なエラーだけを switch で処理します。これにより、成功する経路をすっきり保てます。

具体性による明快さ

エラーを switch で処理すると、どの失敗を想定しているかが正確に記録されます。読者は各ケースと、それに対するコードの反応を確認できます。

コンパイラーが支えてくれる

switch は完全でなければならないため、後から新しいエラーを追加すると、その処理も要求されます。処理漏れはバグではなくビルドエラーになります。

クイックチェック

キャプチャしたエラーに対して switch を使い、一部のバリアントだけを列挙したとします。Zig は何を要求するでしょうか。

まとめ

エラーをキャプチャし、switch でエラーごとに分岐し、関連するケースをまとめ、残りを再スローしました。コンパイラーが網羅性を保ってくれます。✅

よくある質問

「特定のエラーをswitchで処理する」レッスンは無料ですか?

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

「特定のエラーをswitchで処理する」で何を学びますか?

返されたエラーの種類によって分岐します。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「特定のエラーをswitchで処理する」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. catchで復旧する
  2. 特定のエラーをswitchで処理する
  3. 失敗時の後始末にerrdeferを使う
  4. エラーをラップして再スローする
← Zig Academyに戻る