2011-08-10 15 views
1

私は、多くの人々がC++プログラムで例外を使いたくないという傾向を見てきました。C++で例外処理がよく見えないのはなぜですか?

例外はC++にとって自然ではないと言っている人もいます。

一般に、ゲームプログラマは例外処理を無効にします。

また、パフォーマンス上重要なアプリケーションでは、例外の処理は通常避けられます。

私はC++が常に例外処理を持っているとは限りません。

これを避ける理由はありますか?

+0

これはどのように話題ですか? – sje397

+0

どのように話題から外れていませんか?それは事実が証拠にないと仮定している(例外処理は "一般的にC++で見下されている")。これが行うことは討論だけです。これはディスカッションフォーラムではなく、Q&Aサイトです。 –

+0

唯一間違っているのは、(あなたが編集できる)質問のやや予兆的な音です。例外は一般的には見落とされていないかもしれませんが、見落とされています。理由(別名回答)が啓発的で教育的な理由 – sje397

答えて

4

は、私は例外を除いて、4つの問題があります。

  • 人々は、あなたもよく精通している必要があり、それらを適切に使用するためには
  • 流れ非例外プログラムの一部としてそれらを使用するように誘惑され
      他のC++技術(RAII、スマートポインタ)
    1. にそれは簡単な方法を "提供しています - 慎重な計画がなければ
    2. を - 「もの、それは私がちょうど投げるよ」、あなたは多くの場合、あなたは「多数で終わりますプロの外部レベルで「キャッチ」ステートメントグラム(または悪い、 'キャッチオール')

    私は、さまざまなスキルのプログラマーを持つチームでそれらを使用しない傾向があります。彼らは適切に使用すると素晴らしいです。

  • 1

    人々がC++で例外を使用しない理由はわかりませんが、パフォーマンスに重大なコードについてはなぜそれが見えるのでしょうか。通常は、エラーコードを返すCスタイルの処理と例外処理を委譲することに対して、例外が発生するのは比較的高価です。私の推測では、これは例外が実装される前の従来のC++コードです。別の理由は、別の方法でエラーを処理する方がはるかに簡単な場合など、例外クラスを記述するのは理にかなっていない可能性があります。 2番目のステートメントは、(C++がいつも例外を持つとはかぎらないという事実に由来するかもしれませんが)良い解答を提供することを歓迎しているようです。

    4

    例外を回避するための良い理由があります。

    1. 例外安全性はやや困難で、次の表記法を必要とする非常に慎重に
    2. ゲームでそこだけで、ランタイムに失敗することができる多くのものではありません。失敗する可能性のあるものはすべてゲームの初期化にかなりの時間を要します。ゲームの中核部分ではないファイルの読み込みなどが含まれます。それがゲームのパフォーマンスクリティカルなセクションにある場合は、最初に失敗する理由を尋ねる必要がありますか?
    3. スタックを巻き戻すと、ソフトウェアのデバッグに問題が発生します。何かがスローされたときに、コード内のどこで発生したのかを見つけることは難しいです。
    関連する問題