Hi, I'm trying to learn how to use the tryCatch condition system and am confused about the behavior when I set the call arg of a simpleCondition.
I want to catch an error if it meets a certain criteria and otherwise reraise it. I want the error message to indicate the function in which the error occured (and not mention tryCatch). Wanted: > g("foo") ## error caught [1] "caught foo" > g("otherwise") ## error reraised Error in g("otherwise") : otherwise This works: g <- function(msg) { mycall <- sys.call(0) tryCatch(stop(msg), error=function(e) { if ("foo" == conditionMessage(e)) "caught foo" else { cond <- simpleCondition(conditionMessage(e), call=mycall) stop(cond) } }) } But I think I should be able to use sys.parent, or sys.call inside the simpleCondition call instead of saving my position. I found that call=sys.call(-4) gives me the desired result, but can't imagine that this would be a good thing to put into code. Is there a convenient way to say, "give me the call one up from the tryCatch I'm currently in"? Or is saving my call to pass into the tryCatch the best way? Thanks, + seth ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel