タグ

ブックマーク / text.baldanders.info (1)

  • エラー・ハンドリングについて(追記あり)

    C++Java のような言語圏から来た(私のような)人間にとって Go 言語の「オブジェクト指向」はかなり異質なのだが,慣れてみると逆にとても合理的に見えてくる。 なんで C++Java はこのようなアプローチをとらなかったのか不思議なほどである。 この最たるものがエラー・ハンドリングだ。 Go 言語には「例外」がない 「例外(exception)」は来の処理の流れをぶった切って「大域脱出」するための仕組みである。 でも考えてみれば例外というのはかなり微妙な言語仕様だ。 例外が抱える問題というのは質的に goto 文の問題と同じ1。 オブジェクトの状態ごと脱出するため,(脱出前ではなく)脱出後にオブジェクトの後始末を記述せざるを得ないし,記述するためには脱出前の状態(の可能性)を「知識」として知っていなければならない2。 もし後始末をきちんとしないと,それがバグやリークやそ

    エラー・ハンドリングについて(追記あり)
  • 1