2012-06-20 13 views
38

ich ein solches Problem in Debugger erhalten und Programm nicht mehr ausgeführt werden. Debugger zeigt mir nicht die Zeile, also weiß ich nicht, was ich reparieren soll.wie sie beheben „‚System.AggregateException‘in mscorlib.dll aufgetreten“

Eine nicht behandelte Ausnahme des Typs 'System.AggregateException' aufgetreten in mscorlib.dll

Zusätzliche Informationen: Eine Ausnahme Task (s) wurde seine Exception-Eigenschaft nicht beobachtet entweder , indem Sie auf der Task-Warte oder den Zugriff auf . Als Ergebnis wurde die unbeobachtete Ausnahme durch den Finalizer-Thread erneut ausgelöst.

Kann nicht erhalten Wert von lokalen oder Argument '' wie es ist nicht verfügbar an diesem Befehlszeiger, möglicherweise, weil es optimiert wurde entfernt. System.Threading.Tasks.TaskExceptionHolder

So beheben Sie mein Problem?

Ich fand auch diese Frage, die Cannot obtain value of local or argument as it is not available at this instruction pointer, possibly because it has been optimized away

+0

Ich habe dieses Problem irgendwie verursacht, wenn eine zuvor fehlerfreie Konsolenanwendung während eines Debug-Laufs unterbrochen wurde. Das Schließen von Visual Studio und erneutes Öffnen des Problems lösten das Problem und es lief dann in Ordnung - das wird nicht in allen Fällen helfen, aber einen Versuch wert, wenn die Anwendung 'ok' funktionieren sollte. –

Antwort

42

Wie die Meldung sagt ziemlich ähnlich ist, haben Sie eine Aufgabe, die eine nicht behandelte Ausnahme ausgelöst hat.

Schalten Sie Pause auf alle Ausnahmen (Debug, Ausnahmen) und das Programm erneut aus.
Dies zeigt Ihnen die ursprüngliche Ausnahme, wenn es an erster Stelle geworfen wurde.


(Kommentar angehängt): In VS2015 (oder höher). Wählen Sie Debug> Optionen> Debugging> Allgemein und deaktivieren Sie die Option "Nur meinen Code aktivieren".

+2

Wo ist diese Einstellung? Debug> Ausnahmen> ...? – mdupls

+3

@mdupls: Bricht alle CLR-Ausnahmen ab. – SLaks

+1

überprüfen Sie sie alle. Verwenden Sie dann den "Alles zurücksetzen", um zu den Standardwerten zurückzukehren. –

9

Sie konnten die Ausnahme direkt handhaben, so dass es nicht Ihr Programm zum Absturz bringen würde (die AggregateException Fang). Sie können auch auf die innere Ausnahme aussehen, dies wird Ihnen eine ausführlichere Erklärung, was schief gelaufen ist:

try { 
    // your code 
} catch (AggregateException e) { 

} 
+2

Aber wie das Problem auf jeden Fall lösen? –

+0

Im Allgemeinen möchten Sie die Anwendung abstürzen, wenn etwas schief gelaufen ist. Adressieren Sie die Problemquelle, anstatt alle Ausnahmen abzufangen. –

4

Die akzeptierte Antwort wird funktionieren, wenn Sie leicht das Problem reproduzieren können. Aus bewährten Verfahren sollten Sie jedoch Ausnahmen (und Protokollierung) abfangen, die in einer Aufgabe ausgeführt werden. Andernfalls stürzt Ihre Anwendung ab, wenn innerhalb der Task ein unerwarteter Fehler auftritt.

Task.Factory.StartNew(x=> 
    throw new Exception("I didn't account for this"); 
) 

Allerdings, wenn wir dies tun, stürzt zumindest die Anwendung nicht ab.

Task.Factory.StartNew(x=> 
    try { 
     throw new Exception("I didn't account for this"); 
    } 
    catch(Exception ex) { 
     //Log ex 
    } 
) 
0

In meinem Fall habe ich auf dieses Problem lief während Edge.js mit - all das Problem war ein JavaScript-Syntax-Fehler in einem C# Edge.js Funktionsdefinition.

Verwandte Themen