C++の初学者です。
Visual Studio 2017にて、VC++でコンパイルしています。
throwで整数を投げて、
catchでは、あえてdoubleしか受け取らないようにしています。
C++
1#include <iostream> 2 3int main() 4{ 5 std::cout << "Don't type 0.>"; 6 7 int input; 8 std::cin >> input; 9 10 try { 11 throw input; 12 } 13 catch(double &i){ 14 std::cout << i; 15 } 16}
この場合、int型はcatchされないので、std::cout << i; は無視されると理解しているのですが、Visual Studio 2017でLocal Windows Debuggerで実行した際、図のように
"Unhandled exception at 0x74ED46D2 in section26.exe: Microsoft C++ exception: int at memory location 0x00B9FD00."
なるメッセージが表示されます。
なぜこのような挙動になるのか、プログラムに問題があるのかが分からず困っております。
ちなみに、プロジェクトをBuildして作成されるsection26.exeを直接実行すると、エラーは発生せず、
std::cout << i;
も実行されていないため、意図通り動作しているようではあります。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/28 15:37
2021/06/30 04:49