読者です 読者をやめる 読者になる 読者になる

mzgkworks

iOSを中心にプログラミング関係について書く

【Swift】エラー通知とハンドリング

黒帯本iOS開発の基礎を学び直す。
P.63 Chapter 2-02

エラー処理が記述されているメソッドにthrowされる

func A()

  • func Bの呼び出し
  • エラー発生時の処理を記述

func B()

  • func Cの呼び出し

func C()

  • エラー発生時のthrow処理を記述
  • 関数宣言にthrowをつける
    • func 関数名(引数名: 型) throws -> 戻り値の型
  • throw処理の記述

上記関係の場合、func Cでthrowされたエラーはfunc Aで処理される。

ハンドリング

// エラータイプの宣言
enum MyError: ErrorType {
    case InvalidValue
}

// エラーをthrowする可能性がある関数
func doubleUp(value: Int) throws -> Int {
    if value < 0 {
        throw MyError.InvalidValue
    }
    return value * 2
}

// エラーハンドリングが必要なdoubleUp関数を利用する
func callDoubleUp() {
    do {
        // try句をつける(ここで引数に-1を渡すとdoubleUpでthrow -> catch文へ飛ぶ)
        var doubleResultValue = try doubleUp(-1)
        print("正常終了")
    } catch MyError.InvalidValue {
        print("エラー発生")
    }
}