throw in catch
-
Ich habe das hier getestet und bekomme keine Warnung:
#include <iostream> #include <stdexcept> int main() try { using namespace std; try { cout << "value="; int value=0; if(cin>>value) { cout << "value=" << value << endl; } else { throw runtime_error( "bad input" ); } } catch(const runtime_error& error) { throw runtime_error(error.what()); } } catch(const std::runtime_error& error) { std::cout << "runtime_error: " << error.what() << std::endl; }
Es funktioniert auch ohne Probleme, aber ich habe habe mal gelesen dass das in C++ eigentlich nicht so reibungslos gehen kann. Habe ich da mal was falsch gelesen, oder sollte ich so etwas lassen ?
-
Wie sollte man sonst Teile der Exception nach außen weiterreichen? Ist manchmal nötig und ich wüsste auch nicht, warum das nicht reibungslos funktionieren sollte.
-
Warum genau willst du da auch eine Warnung bekommen?
-
im destruktor sollte man sowas nicht machen
-
destroyar schrieb:
im destruktor sollte man sowas nicht machen
Dazu vielleicht ganz interessant (auch wenn es dem Statement zum jetzigen Zeitpunkt natürlich nicht widerspricht, werft nicht aus Destruktoren! )
http://cpp-next.com/archive/2012/08/evil-or-just-misunderstood/
-
Ich habe keine Ahnung, was ein Exceptionhandler eines zu main gehörenden Function-try-Blocks, der weder per return noch per throw beendet wird, bewirkt.
-
cooky451 schrieb:
http://cpp-next.com/archive/2012/08/evil-or-just-misunderstood/
Was soll da stehen? Ich seh nur weiß???