C++で例外を使ったプログラムをうまく書くにはどうすればいいのか(2)

 こないだの記事はアクセス数の割に意外とたくさんコメントや反応を頂いたのだけれど、いろいろ考え始めると、なかなかコメントが返せなかった。
 で、私はtry-catchを書くとそのブロックが呼び出される際に微妙にオーバーヘッドがかかるものだとばかり思っていたのだが、今日調べ直すと、実は、try-catchをいくら書こうが、最近のg++では、例外が実際に発生しない限りはオーバーヘッドは発生しないことがわかった。なんともひどい勘違いである。これが、みなさんのコメントと自分の中の意識とのズレを生んでいた原因のような気がする。
 ノーコストでtryが使えるならば、前回の記事のparse_lineであれば、最内ループのところにtry_catchを書いてしまえばいい(それはそれで見た目的にあまりよろしくない様な気もするが、まぁそこら辺は表記の好みの問題であって、パフォーマンスの問題ではない)ので、葛藤する必要はなく、自分の好きなスタイルで書けばよろしい、ということで自分の中では決着がつきました。

  • 参考URL: http://d.hatena.ne.jp/yupo5656/20040808/p1
    • ちょうど6年前の記事! 6年前だということは、今ではもう、try-catchがオーバーヘッドを生じないことはC++ユーザ的には常識なんでしょうなぁ orz