私は例外に頭を悩ませようとしています。それ以上に、彼らができること、さらに重要なことは、彼らがすべきこととすべきでないことを推測しています。
それで、私がかなり特定の問題についてどのように考えているかの例を見ていき、人々が私が持っているアイデアを祝福するか、打ちのめすようになることを願っています。
xmlファイルから設定を読み取っているので、設定があるかもしれませんが、特定の設定がそこにない場合もあり、問題が発生し、多くの「ポイントエラー処理」が発生します。またはそれを何と呼ぶか、タイプ:(観察:これは「実際のコード」ではなく、うまくいけば私の主張をしているいくつかの疑似的なものです)。
if (xml.attribute("some_attrib")) {
settingForSomeAttrib = xml.attribute("some_attrib")->value();
} else {
settingForSomeAttrib = "some default value";
}
ですから、これは私にチェックと割り当てを多かれ少なかれ残します-そして私がやりたいことは何でも、それは望ましくありません。
それから私は、おそらくすべてを実行し、問題が発生したものをフェッチしてデフォルト値を渡すことができると考えていました。少しだけそれを正しくしようとして、うまくいかなかったものは後で処理します。
try/catch
ある種の思考に私を導きます。
それから私はおそらく私がtryブロックを行うことができると考えています:
try {
setting1 = xml.attribute("attr1")->value(); // throws some kind of "attr1" exception?
setting2 = xml.attribute("attr2")->value(); // -||- "attr2" exception?
} catch (???) {
//go through the things which went wrong and set them settings straight!
}
それが何らかの意味をなすか、少なくとも私の思考の流れをたどることができることを願っています。例外がどのように使用されるのかということではないと思います。
私の質問は、これによって2つに折りたたまれていると思います。
1)例外はこのように使用できますか、それともこれは悪い考えですか?2)妥当性をチェックする際にすべてが肥大化していないコードを取得するために、通常、C ++でこれをどのように実行しますか?
ありがとう。