exception



  • hallo,
    es ist zum schreien.

    ich möchte wenn auf einen vector zugegriffen wird die sicher machen.

    #include <vector>
    #include <exception>
    #include <string>
    
    int main()
    {
    
    	std::vector<int> test;
    
    	test.push_back(2);
    
    	try {
    			int s=test[1];
    		}
    	catch(std::exception&  e)
    	{
    		std::string t=e.what();
    
    	}
    	return 0;
    }
    

    jedenfalls wenn ich jetzt in visual studio 2008 im debug modus die einzelnen zeilen abgehen dann bleibt der im try block hängen und es kommt ne fehler meldung die ungefähr so aussieht

    Debug Assertion Failed! .... Expression : vector subscript out of range

    wieso springt der nicht in den catch block?

    habs auch schon mit stdexception versucht als include und direkt out of range abgefangen aber es geht einfach nicht.

    bitte um hilfe
    viele grüsse
    Xadine



  • Wenn du outofrange-exceptions willst, musste glaub ich at() anstatt dem Indexoperator benutzen.



  • #define _SECURE_SCL_THROWS 1
    

    muss rein, bevor ein erster STL-Header inkludiert wird. Es gibt dann zwar immer noch ein Assert, aber statt hartem Abbruch eine exception.


Log in to reply