Open6

Swift Zoomin' #18

ykwsykws

特に一つしかエラー型がない場合にこのエラーを返すと明示するために typed throws を書きたくなってもやらないこと
拡張性の妨げになる
このあたりは Java と異なる今までの Swift の感覚で明示しない慣習を思い出すこと

ykwsykws

typed throws で例外の型検査もしてくれる

class ParentError: Error {}
calss ChildError: AnimalError {}

let child: () throws(ChildError) -> Void = {}
let parent: () throws(ParentError) -> Void = child

let child2: () throws(ChildError) -> Void = parent // コンパイルエラー。親を子に入れると throw できない可能性があるため