カテゴリ: Swift 更新日: 2025/12/04

Swiftのthrowing関数とエラーハンドリングを徹底解説!初心者でもわかるエラー処理の基本

Swift throwing関数とエラーハンドリング
Swift throwing関数とエラーハンドリング

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

生徒

「Swiftでエラーが発生するかもしれない処理って、どうやって書くんですか?」

先生

「そういうときはthrowtryを使って、throwing関数エラーハンドリングで対応しますよ。」

生徒

「throwって投げるって意味ですよね?関数でどうやって使うんでしょうか?」

先生

「では、Swiftでのthrowing関数の使い方やエラーハンドリング方法を、例を使ってゆっくり説明していきましょう。」

1. throwing関数とは?

1. throwing関数とは?
1. throwing関数とは?

Swiftのthrowing関数とは、エラーが発生する可能性がある関数のことです。普通の関数とは違い、「もし何か問題が起きたら、エラーをthrow(投げる)して呼び出し元に伝えるよ」という意味を持ちます。

関数の定義時にthrowsキーワードを付けると、throwing関数になります。


func divide(_ a: Int, by b: Int) throws -> Int {
    if b == 0 {
        throw DivisionError.dividedByZero
    }
    return a / b
}

この関数は、割る数が0だったときにエラーをthrowしています。DivisionErrorはあとで定義します。

2. エラーの種類を定義しよう(Error型)

2. エラーの種類を定義しよう(Error型)
2. エラーの種類を定義しよう(Error型)

throwing関数で使うエラーは、Errorプロトコルに準拠した「列挙型(enum)」で定義します。


enum DivisionError: Error {
    case dividedByZero
}

このDivisionErrorという列挙型には、dividedByZeroというケース(場合)を定義しています。これが「割り算で0除算エラーが発生した」ことを表すエラーになります。

3. tryでthrowing関数を呼び出す

3. tryでthrowing関数を呼び出す
3. tryでthrowing関数を呼び出す

throws付きの関数は、呼び出すときにtryを使う必要があります。これは「この関数を使うときはエラーが起きるかもしれないから注意してね」という意味です。


do {
    let result = try divide(10, by: 0)
    print("計算結果: \(result)")
} catch DivisionError.dividedByZero {
    print("エラー: 0で割ることはできません")
}

この例では、divide関数をtryで呼び出し、エラーが発生した場合はcatchで処理しています。

4. do-catchでエラーを処理する方法

4. do-catchでエラーを処理する方法
4. do-catchでエラーを処理する方法

Swiftでは、do-catch文を使ってエラーハンドリング(=エラーをうまく処理すること)を行います。doブロックの中でエラーが出るかもしれない処理を書き、実際にエラーが出たらcatchで対応します。


do {
    let result = try divide(10, by: 2)
    print("計算結果: \(result)")
} catch {
    print("何かしらのエラーが発生しました")
}

catchは、指定されたエラーに限らず、すべてのエラーを捕まえて処理できます。特定のエラーだけを処理したい場合は、catch DivisionError.dividedByZeroのように書きます。

5. try?とtry!の違いに注意しよう

5. try?とtry!の違いに注意しよう
5. try?とtry!の違いに注意しよう

tryには3種類の書き方があります:

  • try:標準の書き方。do-catchとセットで使う
  • try?:エラーが出てもnilを返して無視する
  • try!:絶対にエラーが出ないと信じて使う(もし出たらアプリがクラッシュ)

例を見てみましょう。


let result1 = try? divide(10, by: 0)
print(result1)  // nil(エラーが起きたため)

let result2 = try! divide(10, by: 2)
print(result2)  // 5(エラーが出なかったので成功)

try?は安全ですが、エラーの詳細が分かりません。try!は便利ですが、使い方を間違えるとアプリが止まるので注意しましょう。

6. throwing関数と普通の関数の違い

6. throwing関数と普通の関数の違い
6. throwing関数と普通の関数の違い

普通の関数はエラーを返すことができません。何か問題が起きたとしても、戻り値の中でエラーを表現する必要があります。一方、throwing関数は、エラーが起きたらすぐにthrowして処理を中断し、呼び出し元に知らせることができます。

そのため、「失敗する可能性がある処理」はthrowing関数で書くと、コードの読みやすさや安全性が高くなります。

7. throwing関数はどんな場面で使う?

7. throwing関数はどんな場面で使う?
7. throwing関数はどんな場面で使う?

以下のような状況では、throwing関数がよく使われます:

  • ファイルの読み書きで失敗する可能性があるとき
  • ユーザーの入力値が不正なとき
  • サーバーからのデータ取得で通信エラーが出る可能性があるとき
  • データベースの操作で失敗することがあるとき

プログラムを作る上で、「うまくいかなかったとき」に備えて処理を書いておくことはとても大切です。Swiftではthrowing関数とエラーハンドリングを使って、こうした不具合にしっかり対応できます。

カテゴリの一覧へ
新着記事
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のオプショナル型とは?初心者でもわかる使い方とアンラップの基礎