私はC++でエラー処理を理解しようとしています。C++初心者の質問 - try、throw、catchを使った基本的なエラー処理
私はtry、throw、catchを使ってより良いスタイルであり、戻り値を持つif文を使うよりも複雑ではないことを読んでいます。しかし、私は実際にどのように試して、投げて、キャッチするか分かりません。私は下の簡単な例を作りました。問題や悪いスタイルについてのフィードバックを得ることは素晴らしいことです。私の目標は、別の計算の結果をチェックする例から関数を作ることです。
私はtry、throw、catchに関する質問があります: (1)catchステートメントは自分の関数に含めるべきですか?あるいは、main()や初期計算が行われている関数のように、別の場所に置かなければなりませんか?
(2)このシンプルなものを試して、キャッチして投げるのは大変ですか(私のスタイルを改善したいですか?)
(3)エラーが発生した場合は、プログラムを終了します。どうすればいい?あるいは、「キャッチ」とはそれが自動的に行われることを意味しますか?
(4)私はcerrの使用を理解していません。どうして吹き出しを使用しないのですか?私はここで正しくcerrを使いましたか? if/elseステートメントでも使用する必要がありますか?
ありがとうございました。
double calculated = 10.2; // from previous calculation
double tolerance = 0.3; // I can set this in this function
double valueWanted = 10.0; // from previous calculation
const int calcError = 5; // I picked this number randomly to use for indicating an error
try
{
if (fabs(fTargetValue - fCalculated) <= fTolerance)
cout << "Result is within range.";
else
cout << "Failed.";
throw calcError;
}
catch (const int calcError)
{
cerr << "The calculation failed.\n" << endl;
}
注意してください。 「例外は何のために良いの?」のような質問をするときあなたは宗教的議論の領域に入る。一部の人は、「例外は例外的な状況のためのものだ」という忠実な助言を与えるでしょう。他の人は(私自身も含めて)これはナンセンスだと言います。あなたが本当に例外を理解する前にいずれかのアドバイスを盲目的に従えば、あなたが賢明になるまでに数年かかることがあり、議論の両面を見ることができます。このアドバイスを塩の穀物で取り、自分のために決めてください。 –