3

I want to make a new function that has 3 skills

  1. if an error occurs, print "error". Do not stop the whole process, make it keep going

  2. if a warning occurs, print the warning message

  3. if there is no error nor warning, print "Nothing".

For 1) I made a function as follows:

efunc <- function(error){
  return(NA) 
}

tryc <- function(x){tryCatch(x, error = efunc)}


for 2), 3) , I refer to this page( How do I save warnings and errors as output from a function?) and adapted some code, making the following functions


myTryCatch <- function(expr) {
  warn <- err <- NULL
  value <- withCallingHandlers(
    tryCatch(expr, error=function(e) {
      err <<- e                        # <<- is not typo
      print("error")
    }), warning=function(w) {
      warn <<- w                      # <<- is not typo
      invokeRestart("muffleWarning")
    })
  if(is.null(warn)){
    warn<-'Nothing'
  }
  if(is.null(err)){
    err<-'Nothing'
  }
  warning=warn
  paste(unlist(warning),collapse="")


}

However, thinking back, maybe it is possible to combine these two functions.. or, myTryCatch() already has a tryc()'s skill.. but I am not sure.

yoo
  • 491
  • 3
  • 10

0 Answers0