Warum gibt es keine Exception?



  • In einem größeren Projekt hatte ich das Problem, dass ich nach einer Schleife, die Werte aus einem Array liest, ein Breakpoint nicht erreicht wurde. Ich konnte mir aber nicht erklären, warum der Breakpoint nicht erreicht wurde, weil die Schleifenabbruchbedingung stimmte. Ich fand heraus, dass es daran liegt, dass ein Array nicht instanziert wurde. Jetzt stellt sich für micht die Frage, warum keine Exception ausgelöst wurde.

    Hier das vereinfachte Beispiel:

    #define LOOPCOUNT 10
    
    using namespace System;
    using namespace System::Threading;
    
    ref class MyData
    {
    public:
    	//MyData() { this->myArray = gcnew array<double>(LOOPCOUNT); }
    	array<double> ^myArray;
    };
    
    ref class MyLoop
    {
    private:
    	MyData ^myData;
    public:
    	MyLoop(MyData ^kMyData)
    	{
    		this->myData = kMyData;
    	}
    	void loop(System::Object ^obj, System::Timers::ElapsedEventArgs ^e)
    	{
    		for (unsigned i=0;i<LOOPCOUNT;i++)
    		{
    			double val = myData->myArray[i];
    			Console::Write("{0}, ", val.ToString());
    		}
    		Console::WriteLine(); //hier war der Breakpoint
    	}
    };
    
    int main(array<System::String ^> ^args)
    {
        MyData ^myData = gcnew MyData();
    	MyLoop ^myLoop = gcnew MyLoop(myData);
    	System::Timers::Timer ^myTimer = gcnew System::Timers::Timer();
    	myTimer->Interval = 500;
    	myTimer->Elapsed += gcnew System::Timers::ElapsedEventHandler(myLoop, &MyLoop::loop);
    	myTimer->Start();
    
    	Console::WriteLine("Ende Main");
    
    	Thread::Sleep(6000);
    
    	return 0;
    }
    

    Das wäre doch eine interessante Frage für den Jochen, oder?


Anmelden zum Antworten