Wie wiederhole ich einen Fehler in R?

8

Ich erhalte einen Fehler mit tryCatch und versuchen Sie, den Fehler zu beheben. Wie kann ich den Fehler jedoch erneut auslösen, wenn ich den Fehler nicht lokal behandeln kann (d. H. An Fehlerhandler von übergeordneten Funktionen weiter oben im Aufrufstack delegieren)?

Ich habe versucht, % co_de zu verwenden % , aber anstatt den Wiederholungsfehler zu sehen, sehe ich nur signalCondition :

%Vor%

Was läuft falsch?

    
mchen 25.12.2013, 07:16
quelle

3 Antworten

7
%Vor%

wird die Stoppbedingung erneut signalisieren, obwohl der Kontext verloren gegangen ist

%Vor%

Die Rückgabe von nur e , wie @tonytonov vorschlägt, signalisiert, dass eine Bedingung aufgetreten ist, aber nicht, dass ein Fehler aufgetreten ist.

    
Martin Morgan 25.12.2013, 15:08
quelle
0

Es besteht keinerlei Notwendigkeit in signalCondition ():

%Vor%     
tonytonov 25.12.2013 08:51
quelle
0

Es gibt eine Problemumgehung, die Sie verwenden können, um zu vermeiden, dass Sie den Fehler überhaupt fangen und erneut werfen müssen. Verwenden Sie im Grunde ein Erfolgsflag mit einem on.exit -Handler, um einen Codeblock nur auszuführen, wenn der betreffende Code fehlschlägt:

%Vor%

Der Hauptnachteil dieses Ansatzes besteht darin, dass, obwohl Sie wissen, dass ein Fehler aufgetreten ist (weil success nie auf TRUE gesetzt wurde), Sie keinen Zugriff auf das Fehlerobjekt selbst erhalten. Daher müssen Sie eine andere Methode verwenden um festzustellen, ob Sie mit dem Fehler umgehen können oder nicht.

Die runFoo -Wrapper-Funktion wird benötigt, da der on.exit -Ausdruck beim Beenden der aktuellen Funktion ausgeführt wird. Daher muss er in einer Funktion ausgeführt werden. Wenn der Code, den Sie schreiben, bereits in einer Funktion enthalten ist, müssen Sie diesen Wrapper nicht verwenden.

    
Ryan Thompson 21.05.2015 23:35
quelle

Tags und Links