カテゴリ: Swift 更新日: 2025/11/17

Swift Errorプロトコルの作り方|独自エラー型の設計

Swift Errorプロトコルの作り方|独自エラー型の設計
Swift Errorプロトコルの作り方|独自エラー型の設計

先生と生徒の会話形式で理解しよう

生徒

「先生、Swiftのエラーって自分で作れるんですか?ライブラリにあるものしか使えないと思ってました。」

先生

「いいところに気づきましたね。SwiftではErrorプロトコルを使って、独自のエラー型を簡単に作ることができますよ。」

生徒

「独自エラー型って、どういうときに使うんですか?」

先生

「例えばファイル操作やネットワーク通信など、状況ごとに違うエラーを表したいときにとても便利なんです。」

1. SwiftのErrorプロトコルとは?

1. SwiftのErrorプロトコルとは?
1. SwiftのErrorプロトコルとは?

Swiftでは、エラーを表す型はすべてErrorプロトコルに準拠する必要があります。プロトコルとは「ルールの集合」のようなもので、これに準拠すればエラーとして扱えるようになります。

標準ライブラリの多くのエラーもErrorプロトコルに準拠して作られています。私たちも同じ仕組みを使って、独自のエラーを定義できます。

2. 独自エラー型を作る基本

2. 独自エラー型を作る基本
2. 独自エラー型を作る基本

最も一般的なのは、enum(列挙型)を使ってエラーを定義する方法です。複数のケースを分けられるので、エラーの種類を表現するのに向いています。


enum FileError: Error {
    case notFound
    case noPermission
    case unknown
}

このように書くと、FileErrorはエラー型として扱えるようになります。notFoundは「ファイルが見つからない」、noPermissionは「権限がない」、unknownは「その他不明なエラー」という意味を持たせられます。

3. throwで独自エラーを投げる

3. throwで独自エラーを投げる
3. throwで独自エラーを投げる

定義した独自エラーは、関数の中でthrowを使って投げられます。例えば次のようにファイルを開く関数を作れます。


func openFile(name: String) throws {
    if name == "" {
        throw FileError.notFound
    }
    if name == "secret.txt" {
        throw FileError.noPermission
    }
    print("ファイルを開きました")
}

条件に応じて、FileErrorのケースを投げることができます。

4. do-catchで独自エラーを処理する

4. do-catchで独自エラーを処理する
4. do-catchで独自エラーを処理する

投げられた独自エラーは、呼び出し側でdo-catchを使って捕まえます。


do {
    try openFile(name: "secret.txt")
} catch FileError.notFound {
    print("ファイルが見つかりません")
} catch FileError.noPermission {
    print("権限がありません")
} catch {
    print("その他のエラー: \(error)")
}

権限がありません

特定のケースごとに分岐できるので、ユーザーに適切なメッセージを表示できます。

5. 構造体やクラスでも独自エラー型を作れる

5. 構造体やクラスでも独自エラー型を作れる
5. 構造体やクラスでも独自エラー型を作れる

enumだけでなく、struct(構造体)やclass(クラス)を使って独自エラーを作ることも可能です。より詳細な情報を持たせたいときに便利です。


struct NetworkError: Error {
    let code: Int
    let message: String
}

例えば「エラーコード」や「説明文」を持たせれば、開発者やユーザーにとって分かりやすいエラー表示が可能になります。

6. 独自エラー型を使うメリット

6. 独自エラー型を使うメリット
6. 独自エラー型を使うメリット

独自エラー型を設計するメリットは以下の通りです。

  • エラーの種類を明確に分けられる。
  • ユーザーに分かりやすいメッセージを表示できる。
  • 開発者が原因を特定しやすくなる。
  • アプリの信頼性を高められる。

特にアプリ開発では「何が原因でエラーになったのか」を明確にすることが、トラブル解決やユーザー体験の向上につながります。

7. 現実的な利用シーン

7. 現実的な利用シーン
7. 現実的な利用シーン

独自エラー型は、例えば以下のような場面でよく使われます。

  • ネットワーク通信(接続失敗、タイムアウト、無効なレスポンスなど)
  • データベース操作(データが見つからない、保存失敗など)
  • ファイル操作(読み込み権限なし、書き込み失敗など)

これらの場面でErrorプロトコルを活用すれば、アプリがエラーに強くなり、ユーザーにも親切な挙動を実現できます。

カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎