Mit diesem Code:
int main()
{
try
{
throw -1;
}
catch (int& x)
{
std::cerr << "We caught an int exception with value: " << x << std::endl;
}
std::cout << "Continuing on our merry way." << std::endl;
return 0;
}
Wir haben:
/tmp$ ./prorgam.out
Continuing on our merry way
We caught an int exception with value: -1
Wie funktioniert der catch
Block gelesen , -1
wie int&
? Wir konnten einer nicht konstanten Wertreferenz keinen Wert zuweisen.
Und warum wird die zweite std::cout
Anweisung vor der ersten std::cerr
Anweisung ausgeführt?
error stream
nicht umgeleitet standard stream
.
throw
erstellt eine Kopie (oder verschiebt) das Objekt, das Sie an das Objekt übergeben. Die Referenz ist an diese Kopie gebunden. Es macht irgendwie Sinn, dass die Kopie ein Wert ist.
We caught an int exception with value: -1
Zeile sollte zuerst gedruckt werden.