0Pricing
Swift Academy · レッスン

do/catchとエラーの定義(列挙型)

エラーを表す列挙型を定義して関数からスローし、do/catchパターン(特定ケース、catch let、一般的なcatch)で失敗を処理します。

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

概要

このレッスンでは、型付きエラーを定義し、do/catchで処理する方法に重点を置きます。Enumをthrowし、明確な復旧経路のために特定のケースをcatchします。

エラーEnum

Errorに準拠するカスタムenumを定義します。関連値を使うと、役立つコンテキストを追加できます。

enum FileError: Error {
    case notFound(path: String)
    case unreadable(path: String)
    case corrupted
}
print("Defined FileError enum")

throwの基本

失敗する可能性のある関数にはthrowsを付けます。前提条件を満たさない場合は、具体的なケースをthrowします。

func loadText(from path: String) throws -> String {
    if path.isEmpty { throw FileError.notFound(path: "(empty)") }
    if !path.hasSuffix(".txt") { throw FileError.unreadable(path: path) }
    return "Contents of " + path
}
print("Ready to throw on bad input")

特定のエラーをcatchする

do/try/catchを使用します。具体的なcatchケースを先に配置し、その後に残りを処理する一般的なcatchを置きます。

do {
    let text = try loadText(from: "notes.txt")
    print(text)
} catch FileError.notFound(let p) {
    print("Missing file at:", p)
} catch FileError.unreadable(let p) {
    print("Cannot read:", p)
} catch {
    print("Other error:", error)
}

catch letとswitch

catch let error as YourErrorを使用し、その後switchでユーザーにわかりやすいメッセージを整形します。

do {
    _ = try loadText(from: "")
} catch let error as FileError {
    switch error {
    case .notFound(let p): print("not found:", p)
    case .unreadable(let p): print("unreadable:", p)
    case .corrupted: print("file corrupted")
    }
} catch {
    print("unexpected:", error.localizedDescription)
}

復旧と再throw

recover(代替値を返す)するか、呼び出し元にrethrowするかを決めます。ルールはシンプルで予測しやすいものにします。

func mustLoad(_ path: String) throws -> String {
    do {
        return try loadText(from: path)
    } catch FileError.notFound {
        // simple recovery: default content
        return "New file template"
    } catch {
        // escalate unknown issues
        throw error
    }
}
print(try? mustLoad("report.txt") ?? "(nil)")

カスタムエラーのパターン

確認: カスタムエラーを定義する慣用的な方法は何ですか?

まとめ

まとめ: Errorに準拠するEnumで型付きエラーを定義し、具体的なケースをthrowします。do/catchでは、具体的な分岐を先に、一般的な分岐を最後に配置して処理します。

よくある質問

「do/catchとエラーの定義(列挙型)」レッスンは無料ですか?

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

「do/catchとエラーの定義(列挙型)」で何を学びますか?

エラーを表す列挙型を定義して関数からスローし、do/catchパターン(特定ケース、catch let、一般的なcatch)で失敗を処理します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「do/catchとエラーの定義(列挙型)」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. オプショナルチェーンとエラー処理の基本
  2. do/catchとエラーの定義(列挙型)
  3. Result型 — Result
← Swift Academyに戻る