【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文の中で呼び出す