Immer das Exception-Objekt in einem try..catch-um FULL stacktrace, der derzeit seine abgeschnitten
kann jemand helfen?
Ich versuche, den vollständigen stacktrace, wenn innerhalb eines catch-try..catch. Derzeit sind seine abgeschnitten, um nur das aktuelle Methode, wo der Fehler ist....
Lassen Sie mich erklären.. Momentan habe ich meine stacktrace enthält die Methode "Dritten", wo der Fehler passiert, aber Erste und Zweite nicht im Lieferumfang enthalten ist, ich glaube das ist by design.
private void First()
{
this.Second();
}
private void Second()
{
this.Third();
}
private void Third()
{
try
{
throw new SystemException("ERROR HERE!");
}
catch (Exception ex)
{
//I WILL LOG THE EXCEPTION object "EX" here ! but ex.StackTrace is truncated!
}
}
Ich habe gesehen, eine Reihe von tricks, um den vollen stacktrace in STRING-problem, sondern ist meine logging-framework erwartet, dass ein Objekt vom Typ "Exception", aber meine variable (ex), die hat meine exception ist aber die Eigenschaft StackTrace abgeschnitten.
Ist es trotzdem kann ich erhalten eine VOLLSTÄNDIGE Ausnahme mit einem VOLLEN stacktrace-also ich bin in der Lage, noch senden entlang meiner "EX", aber dieses mal wird es eine UNtruncated stacktrace.
UnhandledErrror event zu funktionieren scheint, als ob ich da hier die Ausnahme hat einen stack-trace und ist voll bestückt ...
Ich würde wirklich zu schätzen jede Rückmeldung..
ähm,
ex.ToString()
Sie geben sollte,...InformationsquelleAutor Martin | 2011-05-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Ausgabe in diesem Fall:
Update:, hatte ich plötzlich Zweifel, und lief durch alle präsentierten Lösungen so weit. Sie alle funktionieren, obwohl die Umgebung.StackTrace ist die einfachste. Hier ist, was die Ausgabe sieht so aus:
Sie können sich das gesamte exception in Third wenn man den stacktrace aus der Umgebung.StackTrace-pro für mein update.
InformationsquelleAutor tofutim
Die aktuelle Methode Hinzugefügt werden kann, zwei mal, wenn dem so ist, entfernen Sie eine Zeile aus einer der Eigenschaften.
Naja, Sie sagte "ich LOG DAS EXCEPTION-Objekt "EX" hier ! aber ex.StackTrace abgeschnitten!" ab.StackTrace ist ein string. Wenn Sie nicht möchten, dass ein string-sagen Sie uns, was Sie brauchen.
InformationsquelleAutor Guillaume
Müssen Sie so etwas wie dieses :
Lesen Sie diesen Artikel für weitere Infos :
StackStace Klasse
Hoffe, das hilft.
Auch mit Hilfe der StackTrace-Klasse können Sie den Aufbau Ihrer eigenen ExceptionClass.
InformationsquelleAutor MBen
Sie nicht verstehen, wie stack-trace funktioniert. Was ist eine exception-trace ist die "route" kurz zu sprechen, dass die Ausnahme gereist ist um den Punkt zu erreichen, wo Sie sind handling es.
So, auf dein Beispiel, es hat nicht gereist überhaupt noch, es ist immer noch in der "Dritten" Methode. Wenn würde es sprudeln "Zweite", dann wäre es gegangen, über Dritte, zu zweit, und Sie werden immer, dass auf dem stack-trace.
Ich denke, was Sie eigentlich wollen, ist die CallStack. Ist das gleiche Konzept, aber die Spur, die in die Ausnahme ist, tatsächlich enthalten "rückwärts" Art zu sprechen, als Ausnahme zu Reisen "bis" zu dem Ort, wo er behandelt wird.
Versuchen Protokollierung der Aufrufliste, wo Sie die Ausnahme behandeln.
Macht das Sinn?
Das ist es. Also durch das abfangen der Ausnahme auf Dritte, die Sie nicht erhalten die Informationen, die über erste und zweite in den stacktrace.
Hinweis: ich denke, die folgende ist ausreichend, um den call-stack:
new StackTrace().ToString()
.InformationsquelleAutor Jorge Córdoba