2016-04-17 9 views
3

Ich verwende tryCatch, um alle auftretenden Fehler zu erfassen. Aber obwohl ich sie abfange und den entsprechenden Fehlerwert zurückgebe, sieht es aus, als ob der Fehler immer noch in den Protokollen meines Batch-Systems gemeldet wird. Gibt es eine Möglichkeit, den Fehler vollständig zu unterdrücken und einfach mit der von mir bereitgestellten Fehlerbehandlung fortzufahren?tryCatch unterdrücken Fehlermeldung

+0

was hier bedeutet ‚den entsprechenden Fehlerwert zurückgeben‘? Wenn Sie einen Fehler von einem Fehlerbehandler zurückgeben, ist es sinnvoll, dass sie angezeigt werden. Sie könnten nichts zurückgeben 'tryCatch (expr, function (e) {})' (möglicherweise zuerst prüfen, ob 'e' einige Bedingungen erfüllt – jaimedash

+1

lassen Sie mich klären: Ich gebe derzeit keinen Fehler explizit von meinem Fehler Handler-Funktion. Ich drucke die Nachricht über 'message (cond)' wo 'cond' ist die Fehlerbedingung. Ist dies der Grund, dass es angezeigt wird? Dh Nachricht sendet tatsächlich Dinge zu stderr statt stdout? Wenn ja, habe ich das in der Hilfedatei verpasst – Alex

+0

mit anderen Worten: wenn ich nicht "message (cond)" dann sollte kein Fehler sichtbar sein richtig? – Alex

Antwort

2

Stellen Sie sicher, dass Sie weder (1) einen Fehler ausgeben noch (2) in Ihrem Fehlerbehandlungscode auf stderr drucken. Hinweis ein Gotcha hier ist message sendet seine Ausgabe an stderr.

Eine minimale Art und Weise beide Bedingungen erfüllt, ist tryCatch(expr, error = function(e) {})