ボクダイモリ

Life is like a Game

【Swift3.0】Errorプロトコルを使った例外処理のサンプルを作ってみた

Swift3.0でErrorプロトコルとdo~catch構文、tryを使ってみた。 最小限のコードだけメモとして残しておく。

実行した環境は以下の通り

  • xcode version:8.2.1
  • swift version:3.0.2

Errorプロトコルを定義

以下の様にErrorプロトコルを定義する

enum TestError:Error {
    case Error1(String)
    case Error2(String)
}

enum要素に引数をとることで、エラーメッセージなどを呼び出し元から参照することができる。

次に上記の例外を投げる関数が以下。

func TestMethod(str:String) throws {
    if str == "error1" {
        throw TestError.Error1("エラー発生1")
    }
    else if str == "error2" {
        throw TestError.Error2("エラー発生2")
    }
}

また、例外をthrowするメソッドはthrows宣言をしないとコンパイルができない。

try~catch構文とtryで関数呼び出し

作成した例外を投げる関数をdo~catch構文の中で呼ぶ。
関数を呼び出すときは先頭にtryをつける。
Errorプロトコルの要素は引数にStringを取っているので、 例外発生時にその値を出力するようにしてみる。

do {
    try TestMethod(str: "error1")
} catch TestError.Error1 (let err) {
    print (err)
} catch TestError.Error2 (let err) {
    print (err)
}
//実行すると「エラー発生1」と出力される

まとめ

  • Errorプロトコルを使うことで例外を定義できる
  • 要素に引数を与えることで、例外発生時に呼び出し元にデータを渡せる
  • 例外を投げる関数にはthrows宣言をつける
  • 例外が発生しうる関数の呼び出しはdo~catch文の中で呼び出す