0Pricing
Swift Academy · レッスン

LocalizedErrorによるカスタムエラー型

ErrorとLocalizedErrorに適合する、情報量の豊富なエラー列挙型を設計します。

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

ようこそ

適切に設計されたエラー型は、問題の診断やユーザーにわかりやすいメッセージの表示に必要な十分なコンテキストを持ちます。`LocalizedError` はそのためのフックを提供します。

基本的なError enum

```swift enum AuthError: Error { case invalidCredentials case accountLocked(until: Date) case networkUnavailable } ```

LocalizedErrorプロトコル

```swift extension AuthError: LocalizedError { var errorDescription: String? { switch self { case .invalidCredentials: return "Username or password is incorrect." case .accountLocked(let date): return "Account locked until \(date.formatted())." case .networkUnavailable: return "No internet connection." } } } print(AuthError.invalidCredentials.localizedDescription) ```

failureReasonとrecoverySuggestion

```swift extension AuthError: LocalizedError { var failureReason: String? { "Authentication service rejected the request." } var recoverySuggestion: String? { "Reset your password or contact support." } } ```

ネストしたエラーのコンテキスト

```swift enum APIError: Error { case server(statusCode: Int, body: String) case decode(underlying: DecodingError) case timeout } ``` 内部のエラーを保持しておくと、ログに記録したり、デバッグビルドで表示したりできます。

カスタムエラーをthrowする

```swift func login(user: String, pass: String) throws -> Token { guard !user.isEmpty && !pass.isEmpty else { throw AuthError.invalidCredentials } // ... } ```

特定のケースをcatchする

```swift do { let token = try login(user: u, pass: p) } catch AuthError.invalidCredentials { showAlert("Bad credentials") } catch AuthError.accountLocked(let date) { showAlert("Locked until \(date)") } catch { showAlert(error.localizedDescription) } ```

CustomDebugStringConvertible

```swift extension AuthError: CustomDebugStringConvertible { var debugDescription: String { "AuthError.\(self)" } } ```

エラーをラップするパターン

```swift enum AppError: Error { case auth(AuthError) case api(APIError) case unknown(Error) } func process() throws { do { try login() } catch let e as AuthError { throw AppError.auth(e) } catch { throw AppError.unknown(error) } } ```

テスト用のEquatableエラー

```swift enum FetchError: Error, Equatable { case notFound case serverError(code: Int) } XCTAssertEqual(error, FetchError.notFound) ```

確認問題

ユーザー向けのエラーメッセージに `errorDescription` を提供するプロトコルはどれですか?

まとめ

重要なポイント: • ユーザー向けのメッセージには、エラーを `LocalizedError` に準拠させます • 関連値を使って、ステータスコードや日付などのコンテキストを保持します • 下位レベルのエラーをドメイン固有のenumでラップします • `Equatable` なエラーにすると単体テストが簡単になります • `CustomDebugStringConvertible` はデバッグに役立ちます 次はResultとasync/awaitの橋渡しです。

よくある質問

「LocalizedErrorによるカスタムエラー型」レッスンは無料ですか?

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

「LocalizedErrorによるカスタムエラー型」で何を学びますか?

ErrorとLocalizedErrorに適合する、情報量の豊富なエラー列挙型を設計します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「LocalizedErrorによるカスタムエラー型」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Result の基礎
  2. ResultのmapとflatMap
  3. LocalizedErrorによるカスタムエラー型
  4. Resultからasync/awaitへの橋渡し
← Swift Academyに戻る