Gibt es eine Möglichkeit, Protokolle zu erfassen, ohne Ausnahmen stummzuschalten?In meinem Test-Framework möchte ich die Unordnung beseitigen, die durch das Drucken/Schreiben/behandelte Ausnahmen aus meiner Ausgabedatei entsteht, also habe ich versucht, Testcode innerhalb einer Protokollerfassung (Eval(testExpression)) auszuführen. Mein Problem ist, dass dies anscheinend auch alle Ausnahmen zum Schweigen bringt, die beim Auswerten von testExpression ausgelöst werden, was ich nicht erwartet hatte.
Als Beispiel:
Try(
logs = Log Capture(
Throw( "newsflash buddy!" );
);<BR /> Print( "Logs: " || logs );
,
Print( "Error:" || exception_msg )
);
Ich möchte die Protokolle abrufen, lande aber trotzdem im Catch, falls der Code im Capture einen Fehler auslöst.
Nebenfrage: Meine ausgelöste Ausnahme erscheint nicht wirklich in den Protokollen, was mich noch mehr verwirrt, warum die Erfassung sie zum Schweigen bringt.
Automatisierung und SkripterstellungBetreff: Gibt es eine Möglichkeit, Protokolle zu erfassen, ohne Ausnahmen stummzuschalten?Prüfen Sie, ob diese Funktion für Ihren Zweck geeignet ist.

Betreff: Gibt es eine Möglichkeit, Protokolle zu erfassen, ohne Ausnahmen stummzuschalten?Hallo Mark, die Funktion, die du verlinkt hast, ist die, auf die ich mich in meinem ursprünglichen Beitrag bezog. Das Problem, das ich habe, ist, dass Ausnahmen, die in den Ausdrücken innerhalb der Erfassung ausgelöst werden, unterdrückt werden. In meinem Snippet oben wird beispielsweise der Druck im Catch-Block nicht ausgeführt.
Betreff: Gibt es eine Möglichkeit, Protokolle zu erfassen, ohne Ausnahmen stummzuschalten?Ich erinnere mich nicht an die Details, aber LogCapture musste alle ungelösten Würfe verarbeiten. Es kann nicht erneut ausgelöst und das Ergebnis gespeichert werden Protokolle ohne Ihre Hilfe – etwa so:
Try(
logs = Log Capture(
Try(
rememberException = Empty();
Print( "Hello" );
Throw( "newsflash buddy!" );
,
rememberException = exception_msg
)
);
Print( "Logs: " || logs );
If( !Is Empty( rememberException ),
throw( "remember: " || rememberException )
);
,
Print( "Error: " || exception_msg )
);
„Protokolle:
\!"Hallo\!""
„Fehler: Denken Sie daran: Newsflash, Kumpel!“
Betreff: Gibt es eine Möglichkeit, Protokolle zu erfassen, ohne Ausnahmen stummzuschalten?Ich habe vergessen zu erwähnen, dass Sie das von dieser Funktion zurückgegebene Ergebnis zur Prüfung speichern können.@Craige_Hales 'Antwort zeigt, wie Sie diese Funktion verwenden können, anstatt aus einem als Argument bereitgestellten Code heraus zu drucken. Die Verwirrung tut mir leid.
Betreff: Gibt es eine Möglichkeit, Protokolle zu erfassen, ohne Ausnahmen stummzuschalten?Danke Craige, das ist perfekt!