前回に precondition
と assertion
を眺める機会になりましたけれど、眺めていった最後の最後で「もしかして、今まで話したことは間違っているのでは?」みたいな展開になりました。そのまま終わりの時刻を迎えた都合で、この間は「調べて次回にお知らせする」とお話ししましたけれど、せっかくならその調べる経過も含めてみんなで眺めて行けたら楽しそう。そう思って今回は少し趣向を変えて precondition
と assertion
の様子を眺めていく回にしてみようと思います。よろしくお願いしますね。
—————————————————————————————————————————————— 熊谷さんのやさしい Swift 勉強会 #139
00:00 開始 00:16 今回の展望 02:11 Swift の assert 系メソッドと fatalError の使い方 02:55 assert 系の関数 03:33 assert と assertionFailure 04:04 assert は Release ビルドで無視される 04:19 precondition と preconditionFailure 04:50 fatalError 05:02 今回の話題 05:48 中身は同じらしい 06:58 assert, precondition, fatalError のどれを使うか 07:32 Assertion を使う場面 08:00 リリースビルドで内部情報が漏れないように使う 08:40 リリース先でクラッシュするのを回避する 09:20 precondition でエラーチェックのオーバーヘッドを削減 09:50 本番環境のメモリー空間を意識するようなとき 10:54 assert の使いどころと問題点 12:25 エラーハンドリング 13:07 エラーハンドリングの実装コスト 14:01 fatalError の特色 14:42 エラーの意味合いも踏まえて判断する 15:57 落とすべきところは落とすという判断 18:32 前回からの話の続き 18:48 fatalError と precondition の戻り値の型 19:54 Void と Never の特色 23:05 precondition の継続性 27:21 preconditionFailure を用いたときの挙動 28:55 precondition は、取り除かれる? 35:58 preconditionFailure は必ず実行される様子 38:20 -Ounchecked ではなく -Ouncheck の可能性? 39:52 クロージング ——————————————————————————————————————————————