Learn R Programming

R.oo (version 1.21.0)

Exception: The Exception class to be thrown and caught

Description

Package: R.oo Class Exception

Object ~~| ~~+--try-error ~~~~~~~| ~~~~~~~+--condition ~~~~~~~~~~~~| ~~~~~~~~~~~~+--error ~~~~~~~~~~~~~~~~~| ~~~~~~~~~~~~~~~~~+--simpleError ~~~~~~~~~~~~~~~~~~~~~~| ~~~~~~~~~~~~~~~~~~~~~~+--Exception

Directly known subclasses: InternalErrorException, RccViolationException, RdocException

public static class Exception extends simpleError

Creates an Exception that can be thrown and caught. The Exception class is the root class of all other Exception classes.

Usage

Exception(..., sep="", collapse=", ")

Arguments

...

One or several strings, which will be concatenated and contain informative message about the exception.

sep

The string to used for concatenating several strings.

collapse

The string to used collapse vectors together.

Fields and Methods

Methods:

as.character Gets a character string representing of the Exception.
getCall -
getCalls Gets the active calls saved when the exception was created.
getLastException Static method to get the last Exception thrown.
getMessage Gets the message of the Exception.
getStackTrace Gets the stack trace saved when the exception was created.
getStackTraceString Gets the stack trace as a string.
getWhen Gets the time when the Exception was created.
print Prints the Exception.
printStackTrace Prints the stack trace saved when the exception was created.
throw Throws an Exception that can be caught.

Methods inherited from error: as.character, throw

Methods inherited from condition: abort, as.character, conditionCall, conditionMessage, print

Methods inherited from Object: $, $<-, [[, [[<-, as.character, attach, attachLocally, clearCache, clearLookupCache, clone, detach, equals, extend, finalize, getEnvironment, getFieldModifier, getFieldModifiers, getFields, getInstantiationTime, getStaticInstance, hasField, hashCode, ll, load, names, objectSize, print, save

See Also

See also tryCatch() (and try()).

Examples

Run this code
# NOT RUN {
######################################################################
# 1. To catch a regular "error" exception thrown by e.g. stop().
######################################################################
x <- NA
y <- NA
tryCatch({
  x <- log(123)
  y <- log("a")
}, error = function(ex) {
  print(ex)
})
print(x)
print(y)



######################################################################
# 2. Always run a "final" expression regardless or error or not.
######################################################################
filename <- tempfile("R.methodsS3.example")
con <- file(filename)
tryCatch({
  open(con, "r")
}, error = function(ex) {
  cat("Could not open ", filename, " for reading.\n", sep="")
}, finally = {
  close(con)
  cat("The id of the connection is ",
       ifelse(is.null(con), "NULL", con), ".\n", sep="")
})


######################################################################
# 3. Creating your own Exception class
######################################################################
setConstructorS3("NegativeLogValueException", function(
  msg="Trying to calculate the logarithm of a negative value", value=NULL) {
  extend(Exception(msg=msg), "NegativeLogValueException",
    .value = value
  )
})

setMethodS3("as.character", "NegativeLogValueException", function(this, ...) {
  paste(as.character.Exception(this), ": ", getValue(this), sep="")
})

setMethodS3("getValue", "NegativeLogValueException", function(this, ...) {
  this$.value
})


mylog <- function(x, base=exp(1)) {
  if (x < 0)
    throw(NegativeLogValueException(value=x))
  else
    log(x, base=base)
}


# Note that the order of the catch list is important:
l <- NA
x <- 123
tryCatch({
  l <- mylog(x)
}, NegativeLogValueException = function(ex) {
  cat(as.character(ex), "\n")
}, "try-error" = function(ex) {
  cat("try-error: Could not calculate the logarithm of ", x, ".\n", sep="")
}, error = function(ex) {
  cat("error: Could not calculate the logarithm of ", x, ".\n", sep="")
})
cat("The logarithm of ", x, " is ", l, ".\n\n", sep="")

# }

Run the code above in your browser using DataLab