Visual Studio 2015; C++ Sprache.try catch-Block in der main() -Funktion ohne Klammern
Ich erinnere mich, dass ich irgendwo über den Eintrittspunkt gelesen (das heißt main
-Methode), was es möglich ist, dies zu schreiben:
#include <iostream>
using namespace std;
int main()
try{
return 0; // I am here...
}
catch (...){
cout << "I am 'catch'..." << endl; // This row wasn't called!
return 1; // Oops... But the next `F10` key pressing jumps from the "try"
// block into this row!
}
D.h. in diesem Fall wird der try\catch
Block nicht in den Klammern befindet:
int main() { // start bracket
try{
return 0;
}
catch (...){
return 1;
}
} // end bracket
Beide Fälle werden kompiliert auch erfolgreich und arbeiten, aber ... In der ersten Variante, wenn ich Schritt für Schritt am Drücken der Taste F10
nach dem try
Block bekomme ich auch in den catch
Block. Für die zweite Variante des Codes habe ich kein solches Verhalten.
Warum passiert das? Diese
Wenn Sie nach dem Namen suchen, wird es eine Funktion Try Block genannt.Ich sehe dein Verhalten nicht mit [Clang] (http://coliru.stacked-crooked.com/a/89ae1763b006f80b) oder mit demselben Code auf [online MSVC] (http://webcompiler.cloudapp.net/). . – chris
Und was ist der Statuscode (errorlevel), den Sie erhalten, nachdem die Anwendung ausgeführt wurde? – fritzone
Related: http://stackoverflow.com/questions/335839/can-you-really-have-a-function-method-without-a-body-but-just-a-try-catch-block?rq=1 –