Ich habe es mit einer Funktion zu tun, die sowohl Fehler als auch Warnungen enthält. (verwandt: Warnung wegen Warnung )
Oft wird bei einer Warnung ein Fehler ausgegeben. In diesen Situationen möchte ich die Warnung ignorieren und nur den Fehler verarbeiten.
Wenn es andererseits nur eine Warnung gibt (ohne Fehler), möchte ich die Warnung abfangen.
Ich versuche, mit dem notorisch einfach zu bedienenden tryCatch
zu arbeiten.
Meine unmittelbare Frage ist:
Gibt es eine Möglichkeit, tryCatch
zur Verarbeitung von error
s vor warning
s zu erzwingen (oder Warnungen zu ignorieren, wenn ein Fehler auftritt)?
Mein Verständnis aus der ?tryCatch
-Dokumentation ist, dass die Bedingungen mit FIFO behandelt werden. In diesem Fall lautet die Antwort auf meine unmittelbare Frage Nein - zumindest nicht direkt. In diesem Fall ist es möglich, die Warnung zu verarbeiten und die Funktion fortzusetzen, während weiterhin Fehler erfasst werden.
Lösungen für mich nicht verfügbar:
suppressWarnings
# Ich möchte immer noch die Warnungen abfangen und behandeln options(warn=2)
# bestimmte Warnungen sind harmlos %Vor%Wenn eine Bedingung während der Auswertung von expr signalisiert wird, werden etablierte Handler überprüft, beginnend mit den zuletzt festgelegten, für einen, der der Klasse der Bedingung entspricht. Wenn mehrere Handler in einem einzigen tryCatch bereitgestellt werden, gilt der erste als neuer als der zweite. Wenn ein Handler gefunden wird, wird die Kontrolle an den tryCatch-Aufruf übergeben, der den Handler festlegte, der Handler gefunden und alle aktuelleren Handler werden aufgelöst, der Handler wird mit der Bedingung als sein Argument aufgerufen, und das vom Handler zurückgegebene Ergebnis wird als zurückgegeben der Wert des tryCatch-Aufrufs.
Erwartete / ideale Ausgabe:
%Vor%Dies bezieht sich auf "Ist es möglich, die Warnung zu verarbeiten und dann die Funktion fortzusetzen, während immer noch Fehler abgefangen werden?" Frage.
Ich hatte ein ähnliches Problem, bei dem ich meine Protokollierungsfunktionen für Warnungen und Fehler an den try catch binden und immer nach Warnungen fortsetzen und auch mehrere Versuche bei try catch, z. für den Zugriff auf ein schwaches Netzwerklaufwerk. Das habe ich am Ende benutzt. Diese oder eine vereinfachte Version könnte Ihnen bei Ihrem Nachher helfen.
%Vor% Ich würde eine Funktion schreiben, die expression
ausführt und die Fehler priorisiert.
Tags und Links r exception-handling try-catch