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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- オプショナルチェーンとエラー処理の基本
- do/catchとエラーの定義(列挙型)
- Result型 — Result