あと、APIの戻り値も例外に対応させていいことが結構あるんだけど、ラップするのが面倒というのは良くあること(自分の場合)。
2010-04-29 21:49:06VC++の# importはなぜかraw_interface_onlyを付けて使われることが多い不思議。それ使わないで高水準なラッパ作らせるのが便利なのに。
2010-04-29 21:50:39僕は例外安全教徒でもあるわけですが、そんな僕からしてみても、例外はあまり使いすぎない方がいい気がします。少なくとも、事前に例外の有無を検出できるようにするべき( bad_alloc みたいな超例外的な奴もありますが)。
2010-04-29 21:51:12C++ においては、例外は例外的な事態に対してのみ使うべきだと思うの。例外的、がどの程度かは人によって違いますが。
2010-04-29 21:55:58@SubaruG 個人的には、newがメモリ確保に失敗した程度で例外投げてくるのが気に入りません。NULLでいいじゃないですか・・・
2010-04-29 21:56:56そういうわけでWinSTLは割とガンガン例外に対応させていて基本好きだけど、moduleクラスは例外使われすぎて萎えた。新しいWidowsにしかないモジュールをLoadLibraryする用途に使おうと思ったら、LoadLibraryがNULL返すと例外。回避手段なさそうだった。
2010-04-29 21:57:36C++の例外って全然使った覚えが無いんだけど・・・。ネットワーク関係には例外をばんばん使うべきだろうなとは思うけど、それ以外は使うの避けたほうがいいんじゃないかなと思ったり。
2010-04-29 21:57:41@apprentice_mage deprecated ですけど nothrow な new を使えばよいのでは。
2010-04-29 21:58:01例外的な事態が起きたときに例外を投げてくれないのは困るにゃー。失敗率のごく低いものに対していちいち戻り値による成功チェックなんてしたくない。
2010-04-29 21:59:14よく例外のお世話になると思われるネットワークすらBoost.Asioの非同期版使うとなかなか例外になる機会を見ない。ハンドラに引数として渡されるから。
2010-04-29 21:59:52new なんてめったに失敗しないんだから NULL チェックなんてしたくないです。なのでそこは例外を投げる今の設計を支持。
2010-04-29 22:00:42@SubaruG 例外的な事態 を判定する閾値がもう少し高くてもいいんじゃないかと思います。個人的にですが
2010-04-29 22:00:55@apprentice_mage それはライブラリの設計方針に任せる感じですからねー、良くも悪くも。bad_lexical_cast は爆発していいですが bad_alloc は今のままがいいです。
2010-04-29 22:02:13