Avatar
SwiftってdeinitがあるからRAIIパターンが書けるっていうメリットがあるとされてると思うんですが、 例えばinitでファイルハンドルを開いてdeinitで閉じるようなパターンを実装する時、 閉じるときに生じた例外をハンドリングできないという問題があると思ってて それについて最近思ったのが、 deinitがthrowsつけられてもよいのでは?ということで そうすると、throwing deinitな型をスコープに持っている関数がthrows化するのと、 そういう型の var に対する代入文が throws化するんだけど、 どう思います?
4:21 AM
func writeData() throws { // ここにclose失敗のthrowsが必要, スコープ脱出時だからtry catchはできない let stream = try OutputStream() try stream.write("aaa") } (edited)