日記
途中まで書いたけどこんなの読めばわかるやんってなって一気にやる気が無くなった.読むだけではわからないことがなにかを知るためには別の角度から同じテーマを扱う,もしくはそうしているものを読むしかないなとこの文を書いていて思った.
ような重い処理
にタグが付いているの面白かった.この先生きのこれる気がしないな.
エラーハンドリング
方法
4つあると紹介されている
- 呼び出し元に伝搬する
- do-catchを使う
- optionalな値として扱う
- エラーが起こらないとassertする
Swiftにおけるエラーハンドリングと他言語の例外処理との比較
ほとんど同じだが,コールスタックをクリアするような重い処理を伴わない点は違う.そのためパフォーマンスの観点で見るとthrowはreturnに近い.
Throwing Functions
ある関数がエラーをthrowする場合はパラメータの後にthrowsキーワードを書く.こういった関数をthrowing functionと呼び,それ以外の関数はエラーをthrowすることはできない.
呼び出し元に伝搬する
throwing functionにtryキーワードをつけて呼ぶと,その処理の呼び出し元にエラーを伝搬する.
以下の例ではCaller.init()
の中でthrowing functionであるthrowsError()
にtryキーワードをつけて呼んでいるので,throwsError()
がthrowしたエラーはCaller.init()
の呼び出し元に伝搬される.
enum Caller { static func call() throws { try Thrower.throwsError() } } try Caller.call()