try-catch Problem
-
Hi,
Wieso will das hier nicht funktionieren:
#include <iostream> #include <vector> using namespace std; ... vector<float> fvect1; ... try { fvect1.resize(99999999999999999999999, 0); } catch(const bad_alloc& e_ba) { cerr << "Nicht genugend Speicher vorhanden!" << endl; return(1); }--> Der catch-Block wird nicht ausgeführt. Stattdessen wird mein Programm einfach terminiert.
lg
-
offensichtlich macht "resize" kein "if (blabla > max) throw ...;"
-
#include <vector> #include <iostream> #include <stdexcept> using namespace std; int main() { vector<float> fvect1; int x=99999999999999999999999; cout<<x<<endl; try { fvect1.resize(99999999999999999999999, 0); } catch(const bad_alloc& e_ba) { cerr << "Nicht genugend Speicher vorhanden!" << endl; return(1); } catch(const length_error& e_ba) { cerr << "Paßt gar nicht mehr in den Adressraum oder sowas." << endl; return(1); } }
-
Es sollte auf einem normalen System auch einen Überfluss geben, da "99999999999999999999999" normalerweise weder in einen
intnoch in einenstd::size_tpasst.