LoginSignup
11
9

More than 5 years have passed since last update.

Swift2.0のError Handlingを試してみる

Last updated at Posted at 2015-06-09

Swift2.0からエラーハンドリングができるようになった。

// 独自のエラータイプはErrorTypeプロトコルに準拠する
enum MyError: ErrorType {
    case Error1, Error2(message: String), Error3
}

// エラーを投げる可能性のあるメソッドにはthrowsをつける
func test(e: MyError?) throws {
    if let error = e {
        throw error
    }

    print("成功")
}


do {
    // エラーを投げる可能性のあるメソッドを呼ぶときはtryをつける
    try test(.Error2(message: "メッセージ"))
    // ここは呼ばれない
}catch MyError.Error1 {
    // switch文のようにエラーのタイプごとにcatchできる
    print("Error1")
}catch MyError.Error2(let message) {
    print("Error2")
    print(message)
}catch {
    // catchで具体的なエラータイプを指定しなかった時、errorで投げられたエラーを取得できる
    print(error)
}

tryをつけてメソッドを呼ぶ場合、必ず、doで囲って、catchでエラーを補足する必要があるようです。

ただ、場合によって絶対にエラーを投げないんだよなって時もある。
そんな時はtry!にするとdocatchを省略できる。

try!付きで呼んだメソッドがエラーを投げるとランタイムエラーになる。

try! test(nil)

詳しくは iBooks The Swift Programming Language (Swift 2 Prerelease)

11
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
9