"Problembehandlung bei Ausnahmen: System.Reflection.TargetInvocationException"



  • Hallo,

    innerhalb einer Klasse in meinem Projekt läuft ein Pingaufruf ins leere.
    Beim Aufruf der Form erhalte ich dann eine unbehandelte Exeption.

    Wie und an welcher Stelle muss ich das behandeln?

    int main(array<System::String ^> ^args)
    {
    	// Aktivieren visueller Effekte von Windows XP, bevor Steuerelemente erstellt werden
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false); 
    
    	// Hauptfenster erstellen und ausführen
    	Application::Run(gcnew Form1());      //<-- System.Reflection.TargetInvocationException
    
    	return 0;
    }
    

    In der MSDN-Lib steht zu Target Exeption:

    Stellt die Ausnahme dar, die beim Aufruf eines ungültigen Zieles ausgelöst wird.

    In den folgenden Tabellen werden die vom TargetException -Typ verfügbar gemachten Member aufgeführt.

    Brauch ich da sowas wie nen Invoke Aufruf?

    Danke für die Hilfe



  • Das hier schon gelesen?



  • Tobias1111 schrieb:

    Brauch ich da sowas wie nen Invoke Aufruf?

    Probier's doch mal aus. Aber im Ernst, wie soll Dir jemand die Frage beantworten wenn Du ausgerechnet den Teil des Codes postest, der so ziemlich bei jedem CLI-Programm identisch ist?

    Dir ist klar, dass eine Exception, die nicht gefangen wird, immer im Hauptprogramm aufschlagen wird? Du solltest mit dem Debugger erstmal untersuchen, wo diese Exception geworfen wird, und dann den relevanten Code hier posten. Der Debugger vom VC++ kann Dir Exceptions aber auch anzeigen, wenn sie auftreten, nicht erst, wenn sie ins Leere laufen. (siehe dazu Menü Debuggen->Ausnahmen)



  • Ich hab den geposteten Artikel gelesen, komm allerdings nicht wirklich weiter.

    Ich versuch das Problem nochmal ein bisschen genauer zu beschreiben.
    Ich habe folgendes Beispiel http://msdn2.microsoft.com/de-de/library/system.net.networkinformation.pingcompletedeventhandler.aspx in meinem Projekt eingefügt.

    Wenn ich nun z.B. www.google.de anpinge funktioniert das auch.
    Wenn ich einen Rechner hier im Netz anpinge mit ping RECHNERNAME funktioniert es auch, allerdings nur so lange der Rechner auch wirklich antworten kann sprich am Netz ist.

    Wenn der Ping allerdings nicht erfolgreich durchläuft die PingCallback folgenden Fehler Code

    if ( e->Error != nullptr )
       {
          // Let the main thread resume. 
          (dynamic_cast<AutoResetEvent^>(e->UserState))->Set();
       }
    

    läuft dann allerdings weiter bis zum Ende der Methode.
    Beim Aufruf meiner Form ensteht dann die oben gepostete Ausnahme.

    Ich dachte zu erst, dass es sich um einen allg. Fehler handelt, deshalb hatte ich die spezielle Methode nicht gleich mit gepostet.
    Allerdings funktionieren meine restlichen Callback-Methoden für die restlichen asynchronen Aufrufe.

    Ich muss gestehen, dass ich die Fehlerbehandlung aus dem Beispiel nicht ganz verstehe (z.B. -> (dynamic_cast<AutoResetEvent^>(e->UserState))->Set(); )
    ... daher komm ich im Moment auch nicht weiter


Anmelden zum Antworten