[EMAIL PROTECTED] writes: > Investigating this new implementation I come across an issue in > conjuntion with using S4 classes and methods. try(expr) does not return an > object with attribute 'try-error' in case of method dispatch failure > in the wrapped expression which to me seems not > quite correct.
We've seen some similar issues but had not had time to track them down. > Examples to reproduce the observation: It isn't S4 specific. The issue seems more about anonymous calls/functions. ll = list() ll[[1]] = function(x) stop("died") v = try(do.call(ll[[1]], list(1)), silent=TRUE) Error in as.list(call)[[1]] == "doTryCatch" : comparison (1) is possible only for atomic and list types > v Error: object "v" not found I don't fully understand why the call is being computed, but the following seems to get things going. + seth --- a/src/library/base/R/New-Internal.R +++ b/src/library/base/R/New-Internal.R @@ -7,7 +7,8 @@ try <- function(expr, silent = FALSE) { ## Patch up the call to produce nicer result for testing as ## try(stop(...)). This will need adjusting if the ## implementation of tryCatch changes. - if (as.list(call)[[1]] == "doTryCatch") + callFun <- as.list(call)[[1]] + if (is.name(callFun) && callFun == "doTryCatch") call <- sys.call(-4) dcall <- deparse(call)[1] prefix <- paste("Error in", dcall, ": ") -- Seth Falcon | Computational Biology | Fred Hutchinson Cancer Research Center http://bioconductor.org ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel