【Swift】必ず処理されるdefer
黒帯本でiOS開発の基礎を学び直す。
P.65 Chapter 2-02
defer内に定義した処理は、メソッド終了時に必ず呼び出される
defer { メソッド終了時に行いたい処理 }
throw発生時にも終了時刻を出力させる例
func longMethod() throws { // なんらかの処理(エラー発生時にthrowを行う) } // longMethod()を利用する do { // 正常・エラーに関わらず処理終了時に必ず行う処理 defer { print("処理終了時刻: \(NSDate())") } print("処理開始時刻: \(NSDate())") try longMethod() // try句をつける } catch { print("エラー発生") }
throw発生時の出力結果
- 処理開始時刻: 2016-03-29 02:10:10
- 処理終了時刻: 2016-03-29 02:10:15
- エラー発生