Titus von der Malsburg
2012-Feb-03 10:49 UTC
[Rd] Resume processing after warning handler.
Dear list! I have a script that processes a large number of data files. When one file fails to process correctly, I want the script to write a message and to continue with the next file. I achieved this with tryCatch: for (f in files) tryCatch({heavy.lifting(f)}, error=function(e) log.error.to.file(e)) I also want to log warning messages and tried something like this: for (f in files) tryCatch({heavy.lifting(f)}, warning=function(w) {log.warning.to.file(w)}, error=function(e) {log.error.to.file(e)}) Unfortunately, this aborts processing when a warning is generated. My question: how can I resume processing after I logged the warning as if nothing had happened? My understanding of the man page is that his is not possible with tryCatch but I'm not sure. Thanks for any suggestions! Titus
On 02/03/2012 02:49 AM, Titus von der Malsburg wrote:> Dear list! > > I have a script that processes a large number of data files. When one > file fails to process correctly, I want the script to write a message > and to continue with the next file. I achieved this with tryCatch: > > for (f in files) > tryCatch({heavy.lifting(f)}, error=function(e) log.error.to.file(e)) > > I also want to log warning messages and tried something like this: > > for (f in files) > tryCatch({heavy.lifting(f)}, > warning=function(w) {log.warning.to.file(w)}, > error=function(e) {log.error.to.file(e)}) > > Unfortunately, this aborts processing when a warning is generated. My > question: how can I resume processing after I logged the warning as if > nothing had happened? My understanding of the man page is that his is > not possible with tryCatch but I'm not sure.Hi Titus -- use withCallingHandlers to capture the warning, and invokeRestart() to continue after handling it. withCallingHandlers({ warning('oops') message('continuing') }, warning=function(w) { message('handling: ', conditionMessage(w)) invokeRestart("muffleWarning") })> > Thanks for any suggestions! > > Titus > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel-- Computational Biology Fred Hutchinson Cancer Research Center 1100 Fairview Ave. N. PO Box 19024 Seattle, WA 98109 Location: M1-B861 Telephone: 206 667-2793