Visual Studio 2017でC++のassertメソッドをテストしていますが、予期したとおりにアサーション例外が発生しています。しかし、すべての(!)例外設定を無効にした後で、私のcatchブロックで処理する前に例外がスローされます(以下の例を参照)。Visual Studioの例外設定が無視されました。C++
try {
assert(validate(1363821) == false);
assert(validate(3848238) == true);
printf("Validation correctly implemented.");
} catch (exception & e){
const string error = e.what();
printf("Validation failed!");
}
だから私の質問は以下のとおりです。
- 私はここで何か間違ったことをやっていますか?
- または、assertメソッドはcatchブロックで処理できない何らかの例外をスローし、常に致命的な例外を生成しますか?もしそうなら、致命的なエラーを生成することなく、どのようにアサートメソッドを実装できますか?下記に示されるよう
すべてのヘルプは大歓迎です!
「キャッチブロックで処理できるようになる前に例外がスローされる場合は、ビジュアルスタジオではないメッセージボックスが表示され、アサートがどのように実装されているか」ということです。 – tkausl
@tkausl messageboxのタイトルは "Microsoft Visual C++ランタイムライブラリ"で、「デバッグエラー!」と表示されます。メッセージ。これはVisual Studioではありませんか?そうでない場合、どのようにしてこのメッセージボックスを防ぐことができますか?または、設計上のこの動作は変更できませんか? – etri
リリースモードでコンパイルします。しかし、あなたのコードはあなたのコードが期待どおりに動作するかどうかを確認しているようですが、その目的のためにテストフレームワークを使うべきです。 – tkausl